Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse中的多线程调试_Java_Eclipse_Multithreading - Fatal编程技术网

Java Eclipse中的多线程调试

Java Eclipse中的多线程调试,java,eclipse,multithreading,Java,Eclipse,Multithreading,我有一个Java程序,它创建两个线程,每个线程执行相同的代码(相同的run() 我的第一个线程1在某个监视器上执行wait(),并被挂起,直到第二个线程Thread2在同一监视器上调用notify 我的主要想法是: { // Create threads GameOfLifeThread[][] threads = new GameOfLifeThread[vSplit][hSplit]; for(in

我有一个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 ...;
}
{
    ...
    synchronized (bordersReadyForRead) { 
                    ...                     
                    bordersReadyForRead.wait();
}
            ...                                 
}
主线程继续执行创建的第一个线程的run(),并等待。不知什么原因,第二个线程根本没有启动

这个问题的原因是什么

提前感谢您。

以“开始”而不是“运行”开始您的线程

发生的事情是“run”只是调用您的run方法,所以它会转到块并等待另一个线程。如果使用“开始”,则会启动一个新线程,程序(可能)会按预期工作。

使用“开始”而不是“运行”启动线程

发生的事情是“run”只是调用您的run方法,所以它会转到块并等待另一个线程。如果使用“开始”,则会启动一个新线程,程序(可能)会按预期工作。

使用“开始”而不是“运行”启动线程

发生的事情是“run”只是调用您的run方法,所以它会转到块并等待另一个线程。如果使用“开始”,则会启动一个新线程,程序(可能)会按预期工作。

使用“开始”而不是“运行”启动线程


发生的事情是“run”只是调用您的run方法,所以它会转到块并等待另一个线程。如果您使用“开始”,则会启动一个新线程,您的程序(可能)会按预期工作。

您的回答非常有用。非常感谢。你的回答很有帮助。非常感谢。你的回答很有帮助。非常感谢。你的回答很有帮助。非常感谢。