Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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
Eclipse 调试多线程应用程序时出现的问题_Eclipse - Fatal编程技术网

Eclipse 调试多线程应用程序时出现的问题

Eclipse 调试多线程应用程序时出现的问题,eclipse,Eclipse,我正在尝试在Eclipse中调试一个多线程应用程序。有3个线程 阅读 写 控制器 读写都访问控制器中的一个方法。当Write执行该控制器方法时,我试图调试一个问题 我在写线程和控制器中设置了一个断点。我中断写操作,关闭网络连接以模拟错误,然后点击resume,这样我就在控制器中的断点处结束了 当我在那个里的时候,控制器按它应该的方式工作:它杀死我认为的读写线程,并启动新的读写线程。在终止读写操作后,我打开网络连接来模拟正在解决的问题 所有这些都很棒。现在应该发生的是,一切都在愉快地继续着。除了真

我正在尝试在Eclipse中调试一个多线程应用程序。有3个线程

阅读 写 控制器

读写都访问控制器中的一个方法。当Write执行该控制器方法时,我试图调试一个问题

我在写线程和控制器中设置了一个断点。我中断写操作,关闭网络连接以模拟错误,然后点击resume,这样我就在控制器中的断点处结束了

当我在那个里的时候,控制器按它应该的方式工作:它杀死我认为的读写线程,并启动新的读写线程。在终止读写操作后,我打开网络连接来模拟正在解决的问题

所有这些都很棒。现在应该发生的是,一切都在愉快地继续着。除了真正发生的是读线程执行,我最后再次碰到我在控制器中设置的断点——和我以前在写线程时碰到的断点相同。更糟糕的是,它仍然认为connex网络不可用——这毫无意义,因为我重新启用了它

这一切让我怀疑是否需要以某种方式停止读取线程的执行。我需要通过Eclipse挂起它吗?甚至可以从调试器中运行的应用程序中终止线程吗

标记

我需要通过Eclipse挂起它吗? 不,不需要挂起线程,代码才能正常工作。我很少挂起我的线程,当我怀疑它正在等待我不知道的东西时,我就会挂起它。我使用断点控制停止,有时使用属性

甚至可以从调试器中运行的应用程序中终止线程吗? 不,如果可能的话,关于Java的当前规范,这将不是一个好主意。停止线程的一个好方法是使用标志正确退出run方法:

您确定要退出读写线程吗?一种方法是在运行方法中添加调试信息:

run()
{
  System.out.println("start : " + this.getName());
  // do your process
  System.out.println("stop : " + this.getName());
}
在多线程中,日志记录有时比调试更容易。没有代码,很难更具体