【问题标题】:Multiple threads debugging in EclipseEclipse中的多线程调试
【发布时间】: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


    【解决方案1】:

    用“start”而不是“run”开始你的线程。

    发生的事情是“运行”只是调用你的运行方法,所以它进入块并等待另一个线程。如果您使用“start”,则会启动一个新线程,并且您的程序(可能)按预期工作。

    【讨论】:

    • 您的回答很有帮助。谢谢!
    猜你喜欢
    • 2011-07-19
    • 1970-01-01
    • 2020-11-24
    • 2019-07-21
    • 2023-04-04
    • 2012-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多