我想知道Thread.interrupt()和Thread.currentThread.interrupt()是做同样的事情还是给出相同的结果?如果没有,有什么区别?
类似的问题是:Thread.sleep()和Thread.currentThread.sleep()之间的区别是什么,因为它们似乎有同样的意义?
答案 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上的静态方法,对您调用它的方式没有任何影响。调用它会导致当前执行线程暂停指定的时间。
尽管如此,不应该在实例上调用静态方法,这意味着静态方法应该以静态方式调用。