Java 仅在特定线程中的断点处停止
我有一些多线程代码,正在尝试在Eclipse中设置一些断点,以便进行一些调试 我要设置的断点位于所有线程使用的类中。但是,我只希望在主线程中命中断点。在Eclipse中有这样做的方法吗Java 仅在特定线程中的断点处停止,java,eclipse,multithreading,debugging,Java,Eclipse,Multithreading,Debugging,我有一些多线程代码,正在尝试在Eclipse中设置一些断点,以便进行一些调试 我要设置的断点位于所有线程使用的类中。但是,我只希望在主线程中命中断点。在Eclipse中有这样做的方法吗 我已尝试使用“条件”断点选项,但无法使其工作。您应该能够通过使用依赖于线程本地数据的条件来设置条件断点。两个例子: Thread.currentThread().getName() 某些值存储在ThreadLocal中 条件断点方法很好。条件应该如下所示:Thread.currentThread().getNa
我已尝试使用“条件”断点选项,但无法使其工作。您应该能够通过使用依赖于线程本地数据的条件来设置条件断点。两个例子:
Thread.currentThread().getName()
- 某些值存储在
中ThreadLocal
- 条件断点方法很好。条件应该如下所示:
Thread.currentThread().getName().equals(“main”)
如果要为另一个线程设置断点,只需将
“main”
更改为线程特定的名称,该名称可以通过线程构造函数提供。断点属性对话框中应该有一个项目筛选。在这里,您可以将断点限制为特定线程。但这只在程序已经运行时起作用,因为该对话框显示了运行中JVM的所有线程。条件断点是解决方法。为什么它们不起作用?我想我的问题在于我试图表达的方式。我在主线程中使用了,Thread.currentThread().getId()==0
,当时我认为我应该执行getId()==1
。到目前为止,我喜欢那些建议使用“name”的答案,因为它们更容易在调试器中查看。是的,在这方面使用name更好,特别是因为您可以自己设置它。我自己也尝试过这个方法,但是eclipse一直在我没有选择的线程中停止。似乎条件断点是实现这一点的唯一方法。