gpt4 book ai didi

java - Eclipse 中的多线程调试

转载 作者:行者123 更新时间:2023-12-01 23:24:37 29 4
gpt4 key购买 nike

我有一个 Java 程序,它创建两个线程,每个线程执行相同的代码(相同的 run())。

我的第一个线程 1 在某个监视器上执行 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()并进入等待状态。由于某种未知的原因,第二个线程根本没有启动!

导致此问题的原因是什么?

提前谢谢您。

最佳答案

使用“start”而不是“run”启动线程。

发生的情况是“run”只是调用您的 run 方法,因此它会转到 block 并等待另一个线程。如果您使用“start”,则会启动一个新线程,并且您的程序(可能)按预期工作。

关于java - Eclipse 中的多线程调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20199981/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com