필자가 작성한 Runnable 클래스가 있습니다. 그 안에는 두 가지 방법이 있습니다. run() 메서드 및 stopRunning()이라는 메서드가 있습니다. stopRunning()은 run() 메서드를 실행하는 스레드와 별도의 스레드에 의해 호출되며 run() 메서드를 실행하는 스레드가 실행되지 않도록합니다.Java Threads - 다른 스레드를 통해 스레드가 실행되는 것을 중지하여 메서드 호출하기
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 % 확실하지 않다.
편집 : 내 코드가 잘못되었습니다. 부울에 대해 잘못된 이름을 사용했습니다. 죄송합니다. 이제 해결되었습니다.
멤버 isPlaying과 isRunning을 선언하겠습니까? – seand
예, 혼란에 대해 죄송합니다. 방금 바꿨어. – Tim