【发布时间】:2013-11-25 17:58:44
【问题描述】:
我有一个 Java 程序,它创建两个线程,每个线程执行相同的代码(相同的 run())。
我的第一个 Thread1 在某个监视器上执行 wait() 并暂停,直到第二个线程 Thread2 在同一监视器上调用 notify。
我的主要看起来像:
{
// Create threads
GameOfLifeThread[][] threads = new GameOfLifeThread[vSplit][hSplit];
for(int i=0; i<vSplit; i++){
for(int j=0; j<hSplit; j++){
threads[i][j] = new GameOfLifeThread(initalField, ...);
}
}
// Run threads
for(int i=0; i<vSplit; i++){
for(int j=0; j<hSplit; j++){
threads[i][j].run();
}
}
return ...;
}
run() 函数如下所示:
{
...
synchronized (bordersReadyForRead) {
...
bordersReadyForRead.wait();
}
...
}
主线程继续执行创建的第一个线程的 run() 并等待。由于某种未知原因,第二个线程根本没有启动!
这个问题的原因是什么?
提前谢谢你。
【问题讨论】:
标签: java eclipse multithreading