【发布时间】:2018-09-28 05:01:23
【问题描述】:
在多线程 Java 应用程序中,如果我想确定上下文从一个线程切换到另一个线程的指令,最好的方法是什么?检测每条指令以识别哪个线程正在执行该指令将给出一个接近的近似值。例如,如果切换发生在检测执行之后和实际指令之前。被执行,那么结果将是不精确的。
有没有办法在 Java 中精确识别上下文切换位置(不同的运行会有所不同)?
识别这一点最经济有效的是什么?
【问题讨论】:
-
您不能在 Java 代码中执行此操作。您应该能够使用分析器挂钩来完成此操作。愿意解释为什么您需要这些信息吗?
-
我担心你不了解线程或上下文切换。该功能由 JVM 和操作系统联合执行。特别是上下文切换可能由操作系统在与互斥相关的调用中执行(例如,Linux 上的
futex)。 Java 无法控制这一点。虽然是可以编写自己的上下文切换应用程序(将堆栈保存在应用程序中间)来模拟线程,但除了自我教育之外没有实际需要这样做(但我已经去了那里,它非常有启发性 - 但不是在 Java 中,它是 C 和汇编程序)。 -
@Gray:我需要这样做来执行一些分析。 PP:感谢您对我对线程的理解。
标签: java multithreading scheduling