当前位置 : 主页 > 网络安全 > 测试自动化 >

哪一个更好的性能来检查java中的另一个线程boolean

来源:互联网 收集:自由互联 发布时间:2021-06-22
while(!anotherThread.isDone()); 要么 while(!anotherThread.isDone()) Thread.sleep(5); 正如其他人所说,在这种情况下最好只使用join.但是,我想概括一下你的问题并提出以下问题: 通常,当一个线程正在等待
while(!anotherThread.isDone());

要么

while(!anotherThread.isDone())
    Thread.sleep(5);
正如其他人所说,在这种情况下最好只使用join.但是,我想概括一下你的问题并提出以下问题:

通常,当一个线程正在等待依赖于另一个线程发生的事件时,最好是:

>使用阻塞机制(即连接,条件变量等)或
>忙碌的旋转,没有睡觉或
>忙碌的睡眠?

现在让我们看看每种情况的含义是什么:

>在这种情况下,使用阻塞调用将有效地使您的线程脱离CPU,并且不会再次安排它直到预期的事件发生.有利于资源利用(否则线程会浪费CPU周期),但如果事件可能非常频繁地以较小的间隔发生,则效率不高(即上下文切换比事件发生所花费的时间更耗时) ).一般情况下最终会发生好事,但你不知道多久.>在第二种情况下,您正在忙着旋转,这意味着您正在积极使用CPU而不执行有用的工作.这与情况1相反:当预期事件很快发生时,它很有用,但否则可能会不必要地占用CPU.>这种情况是一种权衡.您正忙着旋转,但同时允许其他线程通过放弃CPU来运行.当你不想让CPU饱和时,通常会使用这种方法,但是事件很快就会发生,并且你想确保在它发生时几乎可以实时捕获它.

网友评论