Intellij 中的断点 "concurrency"
Breakpoint "concurrency" in Intellij
假设我有一个 class 启动两个线程 Thread_A 和 Thread_B ,每个人都做一些计算,偶尔使用我的 class 的子程序。 (不要担心数据共享,假设它是一个日志行或想象子例程是 Java 库中的一个方法)我想知道是否有一种方法可以将此子例程内的断点调节到子例程从 thread_A 调用,但不是 B,或者说某个断点在此断点之前被击中。
显然,我总是可以在调试 window 中转到框架选项卡并查看调用者线程,但这很乏味。 thread_A 访问子例程的频率可能比 thread_B 少得多。我不想看到所有由 Thread_B.
发起的断点
我目前的做法是设置全局标志变量并在调用例程之前对其进行操作。然后我让我的断点条件依赖于标志变量。但是,这可能不是很线程安全,也不是很干净。
正确的做法是什么?出于好奇,是否有任何其他 IDE 用于执行此操作的任何其他语言?
生成线程的代码是您的吗?
如果是这样,您可以在线程上设置唯一名称并使用这些名称
在使用断点条件时区分您的线程。
例如
//spwaning the thread
Thread threadA=...
threadA.setName("thread-A");
// IntelliJ
Condition : Thread.currentThread().getName().equals("thread-A")
假设我有一个 class 启动两个线程 Thread_A 和 Thread_B ,每个人都做一些计算,偶尔使用我的 class 的子程序。 (不要担心数据共享,假设它是一个日志行或想象子例程是 Java 库中的一个方法)我想知道是否有一种方法可以将此子例程内的断点调节到子例程从 thread_A 调用,但不是 B,或者说某个断点在此断点之前被击中。
显然,我总是可以在调试 window 中转到框架选项卡并查看调用者线程,但这很乏味。 thread_A 访问子例程的频率可能比 thread_B 少得多。我不想看到所有由 Thread_B.
发起的断点我目前的做法是设置全局标志变量并在调用例程之前对其进行操作。然后我让我的断点条件依赖于标志变量。但是,这可能不是很线程安全,也不是很干净。
正确的做法是什么?出于好奇,是否有任何其他 IDE 用于执行此操作的任何其他语言?
生成线程的代码是您的吗? 如果是这样,您可以在线程上设置唯一名称并使用这些名称 在使用断点条件时区分您的线程。
例如
//spwaning the thread
Thread threadA=...
threadA.setName("thread-A");
// IntelliJ
Condition : Thread.currentThread().getName().equals("thread-A")