Java 断点;“并发性”;在Intellij中

Java 断点;“并发性”;在Intellij中,java,debugging,intellij-idea,concurrency,ide,Java,Debugging,Intellij Idea,Concurrency,Ide,假设我有一个类,它启动两个线程Thread_a和Thread_B,每个线程都执行一些计算,并局部使用类的子例程。(不要担心数据共享,假设它是一个日志行,或者假设子例程是Java库中的一个方法)我想知道是否有一种方法可以将此子例程中的断点调节为从say线程a而不是B调用的子例程,或者说某个断点在该断点之前被击中 显然,我总是可以通过调试窗口中的frames选项卡查看调用者线程,但这很乏味。在这种情况下,线程A访问子例程的次数可能比线程B少得多。我不想看到所有由线程启动的断点 我目前的做法是设置全局

假设我有一个类,它启动两个线程Thread_aThread_B,每个线程都执行一些计算,并局部使用类的子例程。(不要担心数据共享,假设它是一个日志行,或者假设子例程是Java库中的一个方法)我想知道是否有一种方法可以将此子例程中的断点调节为从say线程a而不是B调用的子例程,或者说某个断点在该断点之前被击中

显然,我总是可以通过调试窗口中的frames选项卡查看调用者线程,但这很乏味。在这种情况下,线程A访问子例程的次数可能比线程B少得多。我不想看到所有由线程启动的断点

我目前的做法是设置全局标志变量,并在调用例程之前对其进行操作。然后,断点的条件取决于标志变量。然而,这可能不是非常线程安全,也不是非常干净


正确的做法是什么?出于好奇,是否有任何其他语言的IDE可以做到这一点?

是您的线程所使用的代码? 如果是这样,您可以在线程上设置唯一的名称,并使用这些名称 在使用断点条件时区分线程

e、 g


我明白了,是的,那会有用的。问题是,是的,代码是我的,因为我可以访问它,但这是代码的简化版本。实际上,这是我试图理解其他人的代码,如果我知道线程是什么,那么问题就不是问题了!:)你的线程是否已经有了可以用作“ID”的名称。。。如果线程启动时没有给它们一个明确的名称,那么将生成一个唯一的名称。我目前无法访问正在运行的IntelliJ。。。但是frames选项卡应该为每个正在运行的线程显示类似“Thread[TheThreadsName,0,]”的内容。。。因此,如果你的线程有唯一的名称,你应该能够通过查看frames选项卡并使用thatha构建断点条件来查看它们有哪些名称。是的,那就可以了。
//spwaning the thread
Thread threadA=...
threadA.setName("thread-A");

// IntelliJ
Condition : Thread.currentThread().getName().equals("thread-A")