什么';Java中Thread.interrupt()和Thread.currentThread.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.interrupt()和Thread.currentThread.interrupt()是做同样的事情还是会给出同样的结果?如果没有,有什么区别

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

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

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()是很重要的,并且您无法重新引发该异常。请参阅上的这篇文章