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