【问题标题】:Java Semaphore Await Idleness impact on other threads?Java Semaphore Await Idleness 对其他线程的影响?
【发布时间】:2014-08-07 16:35:46
【问题描述】:

假设我正在管理我的线程池,所以没有饥饿......

当我使用信号量或其他同步器时,信号量会导致线程等待指定事件发生(例如,信号量释放令牌),等待线程(什么都不做)是否仍会竞争处理器资源针对活动线程?还是在信号量释放令牌之前在资源方面处于次要地位?

【问题讨论】:

    标签: java multithreading semaphore


    【解决方案1】:

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

    如果没有可用的许可,则当前线程变为禁用 线程调度目的处于休眠状态直到两件事之一 发生:[...]

    所以是的,等待线程在资源方面处于次要地位,直到获得许可为止。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-28
        • 1970-01-01
        • 2017-05-10
        • 2015-09-08
        • 1970-01-01
        • 2012-11-07
        • 2015-09-16
        • 2016-02-27
        相关资源
        最近更新 更多