При просмотре this question я заметил этот код:Почему этот код не работает?
class MyThread extends Thread {
private boolean stop = false;
public void run() {
while(!stop) {
doSomeWork();
}
}
public void setStop() {
this.stop = true;
}
}
Однако я не понимаю, почему бы это потерпеть неудачу. Разве другие потоки не получают доступ к «фактической» переменной остановки?
Как вы вызываете 'setStop()'? из того же экземпляра MyThread или другого? –
Я не знаю, к сожалению, это абстрактный пример из вопроса, связанного с –
setStop будет вызываться из другого потока. весь метод выполнения должен сделать, чтобы остановить - это просто возврат, ему не нужен флаг. –