在一个线程组中如果其中一个线程执行报错并不影响其他线程的继续执行,例如:
package com.fyw.thread.lock.exception;
public class MyThread extends Thread {
private String num;
public MyThread(ThreadGroup group,String name,String num) {
super(group,name);
this.num = num;
}
@Override
public void run() {
int numInt = Integer.parseInt(num);
while(true){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("死循环执行中:"+Thread.currentThread().getName());
}
}
}
package com.fyw.thread.lock.exception;
public class Run {
public static void main(String[] args) {
ThreadGroup group = new ThreadGroup("自定义线程组");
MyThread[] myThread = new MyThread[10];
for(int i=0;i<myThread.length;i++){
myThread[i] = new MyThread(group,"线程"+(i+1),"1");
myThread[i].start();
}
MyThread newT = new MyThread(group, "报错线程", "a");
newT.start();
}
}
【运行结果】

本文探讨了多线程环境中异常处理的特点。当一个线程出现异常时,它不会直接影响其他线程的执行。通常,如果线程组中有线程报错,其他线程会继续运行。然而,如果在run方法中添加了异常捕获(catch语句),公共的void uncaughtException(Thread t, Throwable e)方法将不会被调用,导致线程可能不会被终止。"
114541584,10538697,Java代码编译与执行机制详解,"['Java编译', 'JVM', '类加载', '执行机制']
最低0.47元/天 解锁文章
1965

被折叠的 条评论
为什么被折叠?



