我编写了一个Java线程中断代码,但是通过调用中断方法,生成了异常,但是线程没有停止。
公共类MULTITHREADING_9 {公共静态无效main(String [] args){
CHILD_THREAD childThread = new CHILD_THREAD();
childThread.start();
childThread.interrupt();
System.out.println("MAIN_END");
}
}公共类CHILD_THREAD扩展了线程{
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("I'AM A LAZY THREAD");
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
System.out.println("CHILD_THREAD_INTERRUPTED");
}
}
}
}
代码的输出是:-MAIN_END我很懒CHILD_THREAD_INTERRUPTED我很懒我很懒我很懒我是懒惰线程
interrupt
方法在线程休眠时导致InterruptedException
。当您捕获return
以停止线程时,应从方法中使用InterruptedException
(或中断循环-这取决于您的需求)。好的方法是在代码中检查当前线程是否被另一个线程中断:Thread.currentThread().isInterrupted()