Java中的Thread.interrupt()和Thread.currentThread.interrupt()有什么区别?

时间:2011-01-26 04:04:02

标签: java multithreading interrupt

我想知道Thread.interrupt()和Thread.currentThread.interrupt()是做同样的事情还是给出相同的结果?如果没有,有什么区别?

类似的问题是:Thread.sleep()和Thread.currentThread.sleep()之间的区别是什么,因为它们似乎有同样的意义?

1 个答案:

答案 0 :(得分:7)

Thread.interrupt()方法中断实例引用的特定线程:

Thread x = getSomeThreadInstance();
x.interrupt();

x变量可以引用任何线程实例。

Thread.currentThread().interrupt()方法与之前相同,但应用于当前线程,仅中断当前执行线程。它相当于:

Thread x = Thread.currentThread();
x.interrupt();

关于Thread.sleep()Thread.currentThread().sleep()没有区别。 sleep()Thread class上的静态方法,对您调用它的方式没有任何影响。调用它会导致当前执行线程暂停指定的时间。

尽管如此,不应该在实例上调用静态方法,这意味着静态方法应该以静态方式调用。