как закончить поток, когда он спит? - PullRequest
0 голосов
/ 28 июля 2010

Я делаю проект, в котором я планирую что-то случиться через определенный промежуток времени, Я рассчитываю это время, чтобы пройти это время в методе сна. если я снова изменяю время, то я хочу завершить предыдущий поток и начать новый поток. поэтому я хочу знать, как завершить поток, который находится в методе сна, не выполняя его метод run.

1 Ответ

4 голосов
/ 28 июля 2010

Я полагаю, Java, когда вы программируете для Blackberry?

Если да, не используйте Thread.sleep() для ожидания, а вместо этого wait() на мониторе, который затем можно notifyAll(), то есть

private Object waitObject = new Object();

public void doWait() {
  synchronized (waitObject) {
    waitObject.wait(10*1000); // wait up to 10 seconds
  }
}

public void wakeUp() {
  synchronized (waitObject) {
    waitObject.notifyAll();
  }
}

synchronizedблоки важны, так как вам нужно иметь монитор, на котором вы хотите подождать или уведомить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...