zoukankan      html  css  js  c++  java
  • 使用Lock实现信号量

    public class SemaphoreOnLock
    {
        private final Lock lock = new ReentrantLock();
       
        private final Condition permitsAvailable = lock.newCondition();
       
        private int permits;
       
        SemaphoreOnLock(int initialPermits)
        {
            lock.lock();
           
            try
            {
                permits = initialPermits;
            }
            finally
            {
                lock.unlock();
            }
        }
       
        public void acquire()
            throws InterruptedException
        {
            lock.lock();
           
            try
            {
                while (permits <= 0)
                {
                    permitsAvailable.await();
                }
               
                --permits;
            }
            finally
            {
                lock.unlock();
            }
        }
       
        public void release()
        {
            lock.lock();
           
            try
            {
                ++permits;
                permitsAvailable.signal();
            }
            finally
            {
                lock.unlock();
            }
           
        }
    }

  • 相关阅读:
    hdu 4297 One and One Story 夜
    hdu 4280 Island Transport 夜
    1389. Roadworks 夜
    hdu 4289 Control 夜
    hdu 4291 A Short problem 夜
    hdu 4284 Travel 夜
    1080. Map Coloring 夜
    正则中的转义符\
    起重复出现作用的量词*和+
    安卓的权限大全和动态使用安卓权限
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3293936.html
Copyright © 2011-2022 走看看