小编Jas*_*son的帖子

如何在使用wait和notify时修复IllegalMonitorStateException?

我有一个JPanel类,它使用"implements runnable"启动另一个线程.然后,这个其他线程将在各个点调用JPanel类中的一个方法,然后这样做将需要等待用户输入.我试图像这样实现它:

JPanel类中的方法由需要等待的其他线程调用:

public void methodToWait()
{
    while(conditionIsMet)
    {
        try
        {
            wait();
        }
        catch
        {
            e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

JPanel类中的方法,用于通知用户输入的等待:

public void mouseClicked(MouseEvent event)
{
    notifyAll();
}
Run Code Online (Sandbox Code Playgroud)

但是,在运行应用程序时,它会在调用wait时抛出"java.lang.IllegalMonitorStateException",为什么要执行此操作以及如何解决此问题?

java multithreading notify wait

3
推荐指数
1
解决办法
99
查看次数

标签 统计

java ×1

multithreading ×1

notify ×1

wait ×1