Discuss / Java / 哪个好

哪个好

Topic source

那么中断线程用哪个方法好呢?interrupt()还是running

廖雪峰

#2 Created at ... [Delete] [Delete and Lock User]

实际情况是线程要自己根据条件1、条件2、条件3决定是否退出:

void run() {
    while (s1 && (s2 || !s3)) {
        ...
    }
}

void setS1(...) {
}

void setS2(...) {
}

void setS3(...) {
}

interrupt一般用于清理,但很多程序都是直接kill退出,懒得清理

magenious

#3 Created at ... [Delete] [Delete and Lock User]

Hi, 廖老师请教一个问题,第一个例子中,t线程在收到主线程的interrupt信号后,线程是立刻结束的话有没有可能是在比如n++和System.out.println(n + " hello!")中直接就中断退出了?

对照第二个例子理解的话t线程在捕获到InterruptedException 异常时,在catch中的语句执行完后也不是立即就退出,而是会执行完 hello.interrupt();

所以我的问题是线程在中断后具体退出时机是怎样的呢?谢谢解答

廖雪峰

#4 Created at ... [Delete] [Delete and Lock User]

线程退出就是run()方法执行完毕,至于内部捕获InterruptedException跟普通代码是一样的。

magenious

#5 Created at ... [Delete] [Delete and Lock User]

OK, 明白了,谢谢


  • 1

Reply