Java +线程控制方法

时间:2016-02-01 12:54:53

标签: java multithreading

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

我希望得到类似收益的东西,但更理想的是有更好的控制。

有没有办法保护os正在使用的调度程序的信息?我的意思是它正常分配的切片,控制一个多个线程的切片持续时间等...

我希望在没有活动(忙)等待的情况下获得微秒级分辨率。有没有办法甚至使用空闲操作代码/系统功能进行等待?

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

1 个答案:

答案 0 :(得分:0)

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

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

您可以使用MicroJitterSampler在您的计算机上对此进行测试。如果您没有该库,您可以注释掉亲和线(尽管如上所述,您会看到很多噪音)