Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.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 仅在特定线程中的断点处停止_Java_Eclipse_Multithreading_Debugging - Fatal编程技术网

Java 仅在特定线程中的断点处停止

Java 仅在特定线程中的断点处停止,java,eclipse,multithreading,debugging,Java,Eclipse,Multithreading,Debugging,我有一些多线程代码,正在尝试在Eclipse中设置一些断点,以便进行一些调试 我要设置的断点位于所有线程使用的类中。但是,我只希望在主线程中命中断点。在Eclipse中有这样做的方法吗 我已尝试使用“条件”断点选项,但无法使其工作。您应该能够通过使用依赖于线程本地数据的条件来设置条件断点。两个例子: Thread.currentThread().getName() 某些值存储在ThreadLocal中 条件断点方法很好。条件应该如下所示:Thread.currentThread().getNa

我有一些多线程代码,正在尝试在Eclipse中设置一些断点,以便进行一些调试

我要设置的断点位于所有线程使用的类中。但是,我只希望在主线程中命中断点。在Eclipse中有这样做的方法吗


我已尝试使用“条件”断点选项,但无法使其工作。

您应该能够通过使用依赖于线程本地数据的条件来设置条件断点。两个例子:

  • Thread.currentThread().getName()
  • 某些值存储在
    ThreadLocal

    • 条件断点方法很好。条件应该如下所示:
      Thread.currentThread().getName().equals(“main”)


      如果要为另一个线程设置断点,只需将
      “main”
      更改为线程特定的名称,该名称可以通过线程构造函数提供。

      断点属性对话框中应该有一个项目筛选。在这里,您可以将断点限制为特定线程。但这只在程序已经运行时起作用,因为该对话框显示了运行中JVM的所有线程。

      条件断点是解决方法。为什么它们不起作用?我想我的问题在于我试图表达的方式。我在主线程中使用了,
      Thread.currentThread().getId()==0
      ,当时我认为我应该执行
      getId()==1
      。到目前为止,我喜欢那些建议使用“name”的答案,因为它们更容易在调试器中查看。是的,在这方面使用name更好,特别是因为您可以自己设置它。我自己也尝试过这个方法,但是eclipse一直在我没有选择的线程中停止。似乎条件断点是实现这一点的唯一方法。