gpt4 book ai didi

Java:Thread.interrupted() 和 Thread.isInterrupted() 的用法有什么区别?

转载 作者:IT老高 更新时间:2023-10-28 20:25:52 34 4
gpt4 key购买 nike

Java问题:据我所知,线程内部检查线程是否收到中​​断信号有两种方法,Thread.interrupted()Thread.isInterrupted() ,它们唯一的区别是前者重置了内部中断标志。

到目前为止,我一直使用 Thread.isInterrupted() 并且从未遇到任何问题。再说一次,我见过的大多数教程都推荐使用 Thread.interrupted()。有什么具体原因吗?

最佳答案

interrupted()static 并检查当前线程。 isInterrupted()是一个实例方法,它检查调用它的 Thread 对象。

一个常见的错误是在实例上调用静态方法。

Thread myThread = ...;
if (myThread.interrupted()) {} // WRONG! This might not be checking myThread.
if (myThread.isInterrupted()) {} // Right!

另外一个区别是interrupted()也会清除当前线程的状态。也就是说,如果你连续调用了两次,并且两次调用之间没有中断线程,那么即使第一次调用返回true,第二次调用也会返回false .

Javadocs告诉你这些重要的事情;经常使用它们!

关于Java:Thread.interrupted() 和 Thread.isInterrupted() 的用法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1904072/

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