Java等待和通知:IllegalMonitorStateException
我不完全了解wait和notify(的Object工作),并因此我不得不瘦下来我尝试到下面的代码部分。
Main.java:
import java.util.ArrayList;class Main{
public static Main main = null;
public static int numRunners = 4;
public static ArrayList<Runner> runners = null;
public static void main(String[] args)
{
main = new Main();
}
Main()
{
runners = new ArrayList<Runner>(numRunners);
for (int i = 0; i < numRunners; i++)
{
Runner r = new Runner();
runners.add(r);
new Thread(r).start();
}
System.out.println("Runners ready.");
notifyAll();
}}Runner.java:
class Runner implements Runnable{
public void run()
{
try
{
Main.main.wait();
} catch (InterruptedException e) {}
System.out.println("Runner away!");
}}目前我在调用时遇到IllegalMonitorStateException Main.main.wait();,但我不明白为什么。从我所看到的,我需要同步Runner.run,但这样做我认为它只会通知一个线程,当想法是通知他们所有。
我看过了java.util.concurrent,但我找不到合适的替代品(也许我只是遗漏了一些东西)。
守着星空守着你
三国纷争
相关分类