Java Semaphore等待Idleness对其他线程的影响?

时间:2014-06-17 15:22:33

标签: java multithreading semaphore

假设我管理我的线程池,那么没有饥饿...

当我使用信号量或其他同步器时,信号量导致线程等到指定的事件发生(例如信号量释放一个令牌),那等待线程(无所事事)仍然在争夺处理器资源对抗活动线程?或者,在信号量释放令牌之前,它是否会以资源方式获取后座资源?

2 个答案:

答案 0 :(得分:1)

等待线程进入休眠状态。它不占用任何处理器时间,即,在轮询等待条件为真时它不执行忙等待。调度程序不会考虑它。一旦它再次空闲,信号量将明确地唤醒它。

答案 1 :(得分:1)

Javadoc for Semaphore.acquire对此非常明确:

  

如果没有许可证,则当前线程将被禁用   线程安排目的处于休眠状态,直到两件事之一   发生:[...]

所以是的,等待的线程在资源方面采用后座,直到许可证可用。