0
我在Java中有一個關於線程的問題,它帶有單線程及其關於停止線程並繼續。Java簡單線程和單線程IllegalMonitorStateException
我的代碼的作用:類MainWindow創建一個Threadreference並在endloop中啓動和停止它。
類MyThread啓動線程。 run方法是很短,它是所有做的事: 1.將鼠標移動到屏幕的左側 然後 2.將鼠標移動到屏幕
右側當我啓動程序我立即得到一個IllegalMonitorStateException並且不知道如何解決它。
public class MainWindow
{
public static void main(String[] args) throws Exception
{
MyThread mt = new MyThread();
while(true)
{
mt.start();
Thread.sleep(1000);
mt.wait();
}
}
}
public class MyThread implements Runnable
{
private Thread th;
public MyThread() throws Exception
{
th = new Thread();
th.start();
}
public void start() throws InterruptedException
{
synchronized(this){
th.wait();
}
}
public void wait()
{
synchronized(this){
th.notifyAll();
}
}
@Override
public void run()
{
//do something
}
}
感謝您的幫助! :)
你這樣做是錯的。你不能通過調用'Thread#wait()'方法來告訴線程等待。該方法做了完全不同的事情。 – zapl
哦,好吧,我明白了,我想我明白了,它只是用於多線程。我用它,因爲我需要停止線程,但我讀過,如果線程是通過運行方法它死了,所以我無法阻止它...我必須重讀一些東西,然後再試一次 – SergSam
是的,你必須閱讀一下:)你的run方法一點也不用,你需要將'Runnable'傳遞給它的構造函數的線程(例如'th = new Thread(this);'),代碼中的線程和運行方法不起作用。 – zapl