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()也清除了当前线程的状态。换句话说,如果您连续两次调用它,并且两次调用之间的线程都没有中断,那么即使第一个调用返回了false,第二个调用也将返回true

Javadocs会告诉您类似这样的重要信息;经常使用它们!

10-04 22:44