什么';Java中Thread.interrupt()和Thread.currentThread.interrupt()之间的区别是什么?
我想知道Thread.interrupt()和Thread.currentThread.interrupt()是做同样的事情还是会给出同样的结果?如果没有,有什么区别 类似的问题是:Thread.sleep()和Thread.currentThread.sleep()之间有什么区别,因为它们的意义似乎相同?Thread.interrupt()方法中断实例引用的特定线程:什么';Java中Thread.interrupt()和Thread.currentThread.interrupt()之间的区别是什么?,java,multithreading,interrupt,Java,Multithreading,Interrupt,我想知道Thread.interrupt()和Thread.currentThread.interrupt()是做同样的事情还是会给出同样的结果?如果没有,有什么区别 类似的问题是:Thread.sleep()和Thread.currentThread.sleep()之间有什么区别,因为它们的意义似乎相同?Thread.interrupt()方法中断实例引用的特定线程: Thread x = getSomeThreadInstance(); x.interrupt(); x变量可以引用任何线程
Thread x = getSomeThreadInstance();
x.interrupt();
x变量可以引用任何线程实例
Thread.currentThread().interrupt()
方法与前面相同,但应用于当前线程,仅中断当前执行线程。这相当于:
Thread x = Thread.currentThread();
x.interrupt();
关于Thread.sleep()
和Thread.currentThread().sleep()
没有区别sleep()
是上的一个静态方法,对调用它的方式没有影响。调用它会导致当前执行线程暂停指定的时间
尽管如此,不应在实例上调用静态方法,这意味着静态方法应以静态方式调用。方法Thread.interrupt()
中断实例引用的特定线程:
Thread x = getSomeThreadInstance();
x.interrupt();
x变量可以引用任何线程实例
Thread.currentThread().interrupt()
方法与前面相同,但应用于当前线程,仅中断当前执行线程。这相当于:
Thread x = Thread.currentThread();
x.interrupt();
关于Thread.sleep()
和Thread.currentThread().sleep()
没有区别sleep()
是上的一个静态方法,对调用它的方式没有影响。调用它会导致当前执行线程暂停指定的时间
尽管如此,我们不应该在实例上调用静态方法,这意味着静态方法应该以静态方式调用。查看Java 1.6的文档,我找不到
interrupt()
的静态版本或非静态sleep()
…查看Java 1.6的文档,我找不到静态版本的interrupt()
或非静态版本的sleep()
…我要补充的是,中断currentThread似乎有点傻,因为它只会设置中断指示器,但显然不会引发中断异常。@Nicolas,它可能“看起来”有点傻,但实际上调用了Thread.currentThread().interrupt()在处理代码中的InterruptException时非常重要,您无法重新引发该异常。请参阅上的这篇文章,我会补充说,中断currentThread看起来有点傻,因为它只会设置中断指示符,但显然不会引发中断的异常。@Nicolas,它可能“出现”有点傻,但当您在代码中处理InterupException时,实际上调用Thread.currentThread().interrupt()是很重要的,并且您无法重新引发该异常。请参阅上的这篇文章