程序在Eclipse调试器中工作但不在其他任何地方......?

时间:2011-04-17 05:17:24

标签: java multithreading eclipse debugging thread-safety

以下代码段:

private class ConnectionControl implements Runnable
{
    public void run()
    {
        while( true )
        {
            if( !cnnct.isInMsgEmpty() )
                System.out.println( "Incoming message: " + cnnct.getInMsg().getPayloadString() ) ;
        }
    }
}

当我在eclipse调试器中运行它并在System.out行放置一个断点时工作。但是,如果我正常运行它,我就不会收到“Incoming message ...”输出。

有关为什么会这样或甚至调试它的任何想法???


Ahh想通了......有两个线程正在使用相同资源的死锁情况。谢谢你的帮助!

干杯!

2 个答案:

答案 0 :(得分:1)

根据您的需要,有多种方法可以调用Java代码。

您所展示的内容不足以成为自立,如果您尝试将其作为applet或Java应用程序(java .... ConnectionControl)调用,则应该导致错误。它可能是Eclipse可以调用Runnable - 我还没有看到它。

尝试

  1. 让课程公开
  2. 添加一个静态main方法,使其成为Java应用程序
  3. 在main方法的开头添加一条消息,以便您可以看到它已被调用

答案 1 :(得分:0)

您已经在使用System.out.println进行程序输出。添加一些sys输出,输出您在代码中的位置以及各种变量的状态。

我不知道如何调用它,但从代码中我看到你的if条件总是在评估false。