Java + 线程控制方法



我陷入了线程问题的中间,尤其是涉及计时的问题。我知道Thread.wait,Thread.notify,Thread.sleep,Thread.yield和LockSupport.parkXXX。是否有任何其他方法可用于影响线程执行的时间?

我想要类似产量的东西,但更理想的是更好的控制。

有没有办法维护有关操作系统正在使用的调度程序的信息?我的意思是就像它在正常情况下分配的切片一样,控制一个或多个线程的切片持续时间等.......

我想在没有活动(忙)等待的情况下获得微秒分辨率。有没有办法使用空闲操作代码/系统功能来

等待忙碌的等待?

PS:我会问一个类似的问题给C。

Linux 和大多数操作系统的最小时间片为 0.1 毫秒或 1 秒的 1/10,000。

如果你想完全控制CPU,我建议忙于等待一个关闭中断的独立CPU,尽管你会看到一些10-40微秒的抖动。如果您不忙于等待隔离的 CPU,则可以看到大约 5 - 50 毫秒的抖动。在虚拟机上,50 毫秒的抖动非常普遍。

您可以使用MicroJitterSampler在机器上对此进行测试 如果您没有该库,则可以注释掉Affinity的行(尽管如前所述,您会看到很多噪音)

最新更新