Я пытаюсь остановить поток, используя метод .interrupt ().
Вот мой код:
@Override
public void run() {
try {
for (int i = 0; i < 1000000000; i++) {
System.out.println(threadName + " generated " + i);
if (counter.isInterrupted()) {
counter.join();
}
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
Что я не понимаю, так это то, что вместо этого кода:
if (counter.isInterrupted()) {
counter.join();
}
Если я сгенерирую исключение InterruptedException, оно также будет работать.
if (counter.isInterrupted()) {
throw new InterruptedException();
}
Что я не понимаю, так это почему я выбрал бы одно вместо другого. Также я видел несколько подходов, где люди используют переменную логической переменной тоже. Это безопаснее, чем мой подход?