У меня есть класс Runnable, который я пишу.Внутри него у меня есть два метода.Метод run () и другой метод с именем stopRunning ().Функция stopRunning () должна вызываться отдельным потоком от потока, в котором выполняется метод run (), и должна останавливать запуск потока, выполняющего метод run ().
Вот фрагмент кода:
public class myRunnable implements Runnable
{
private boolean stillRunning = true;
public void stopRunning()
{
synchronized (this)
{
stillRunning = false;
}
}
public void run()
{
while (stillRunning)
{
synchronized (this)
{
// do some stuff that doesn't involve the isPlaying var
}
}
}
}
Код выглядит правильно?Нужно ли выполнять синхронизацию, чтобы гарантировать, что изменение isPlaying будет распознано потоком, выполняющим метод run ()?
Кроме того, нужно ли здесь вызывать notify () или notifyAll () для этогоРабота?Я почти уверен, что не знаю, так как никогда не вызываю wait (), но я не уверен на 100%.
РЕДАКТИРОВАТЬ: woops, мой код был неправильным.Я использовал неправильное имя для логического, извините за это.Это сейчас исправлено.