线程中断方法调用

问题描述 投票:0回答:1

我编写了一个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我很懒我很懒我很懒我是懒惰线程

java multithreading
1个回答
0
投票

interrupt方法在线程休眠时导致InterruptedException。当您捕获return以停止线程时,应从方法中使用InterruptedException(或中断循环-这取决于您的需求)。好的方法是在代码中检查当前线程是否被另一个线程中断:Thread.currentThread().isInterrupted()

© www.soinside.com 2019 - 2024. All rights reserved.