如题。
答案:线程在最外层都没有捕获异常的话,线程会终止。
测试1、
public static void main(String args[]){ Object o = new Object(); if (o == null){ throw new RuntimeException(); } try { Thread.sleep(5000L); System.out.println("sleep complete"); } catch (InterruptedException e) { e.printStackTrace(); } }
正常情况下会睡眠结束后结束线程;而在debug过程中,我们手动修改o为null,就不会进入下面的线程睡眠代码。
测试2、捕获运行时异常,线程不会挂
public static void main(String args[]){ Object o = new Object(); try { if (o == null){ throw new RuntimeException(); } } catch (Exception e) { e.printStackTrace(); } try { Thread.sleep(5000L); System.out.println("sleep complete"); } catch (InterruptedException e) { e.printStackTrace(); } }