interrupt() не работает

Я пытаюсь завершить поток в следующем коде:

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). У кого-нибудь есть идеи, почему этот поток не прерывается?

Edit:

Проблема найдена. Оказалось, что было два экземпляра этого потока. Я прилагаю проблемный код, который привел к этому:

/* (class Detector extends Thread) */
Detector detector = new Detector(board);
...
Thread tdetector  = new Thread(detector); /* WRONG!!! */
...
tdetector.start();
...
8
задан Ori Popowski 25 December 2011 в 02:01
поделиться