В чем разница между Thread.interrupt () и Thread.currentThread.interrupt () в Java? - PullRequest
1 голос
/ 26 января 2011

Интересно, будут ли Thread.interrupt () и Thread.currentThread.interrupt () делать одно и то же или даст одинаковый результат? Если нет, то в чем разница?

Похожий вопрос: в чем разница между Thread.sleep () и Thread.currentThread.sleep (), поскольку они имеют одинаковый смысл?

1 Ответ

7 голосов
/ 26 января 2011

Метод Thread.interrupt() прерывает определенный поток, на который ссылается экземпляр:

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

Переменная x может ссылаться на любой экземпляр потока.То же, что и раньше, но применяется к текущему потоку, прерывая только текущий поток выполнения.Это эквивалентно:

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

О Thread.sleep() и Thread.currentThread().sleep() разницы нет.sleep() - это статический метод класса Thread , и он не влияет на способ его вызова.Его вызов заставляет текущий поток выполнения приостанавливаться на указанное время.

Тем не менее не следует вызывать статический метод в экземпляре, что означает, что статический метод должен вызываться статическим способом.

...