Я пытаюсь завершить поток в следующем коде:
public synchronized void run() {
try {
while (!Thread.currentThread().isInterrupted()) {
this.scan();
this.distribute();
this.wait();
}
} catch (InterruptedException e) {}
}
public void cancel() {
this.interrupt();
}
Но поток не завершается. Я использовал отладчик и обнаружил, что после команды this.interrupt()
поток не прерывается (я поставил часы на выражение this.isInterrupted()
и оно остается false
). У кого-нибудь есть идеи, почему этот поток не прерывается?
Проблема найдена. Оказалось, что было два экземпляра этого потока. Я прилагаю проблемный код, который привел к этому:
/* (class Detector extends Thread) */
Detector detector = new Detector(board);
...
Thread tdetector = new Thread(detector); /* WRONG!!! */
...
tdetector.start();
...