gpt4 book ai didi

java - Java中的线程应该如何关闭自己?

转载 作者:IT老高 更新时间:2023-10-28 13:53:14 26 4
gpt4 key购买 nike

这是一个简短的问题。在某些时候,我的线程明白它应该自杀。最好的方法是什么:

  1. Thread.currentThread().interrupt();
  2. 返回;

对了,为什么在第一种情况下我们需要使用currentThreadThread 是不是指当前线程?

最佳答案

如果你想终止线程,那么只要返回就可以了。你不需要调用 Thread.currentThread().interrupt() (它不会做任何坏事。只是你不需要。)这是因为 interrupt( ) 基本上用于通知线程的所有者(嗯,不是 100% 准确,但有点)。因为你是线程的所有者,并且你决定终止线程,没有人通知,所以你不需要调用它。

By the way, why in the first case we need to use currentThread? Is Thread does not refer to the current thread?

是的,它没有。我想这可能会令人困惑,因为例如Thread.sleep() 影响当前线程,但 Thread.sleep() 是静态方法。

如果您不是线程的所有者(例如,如果您没有扩展 Thread 并编写了 Runnable 等),您应该这样做

Thread.currentThread().interrupt();
return;

这样,调用您的可运行文件的任何代码都将知道线程被中断=(通常)应该停止它正在执行的任何操作并终止。正如我之前所说,它只是一种沟通机制。所有者可能会简单地忽略中断状态并且什么都不做。但是如果您确实设置了中断状态,那么将来有人可能会感谢您。

出于同样的原因,你不应该这样做

Catch(InterruptedException ie){
//ignore
}

因为如果你这样做了,你就会在那里停止消息。相反,应该这样做

Catch(InterruptedException ie){
Thread.currentThread().interrupt();//preserve the message
return;//Stop doing whatever I am doing and terminate
}

关于java - Java中的线程应该如何关闭自己?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2491588/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com