zoukankan      html  css  js  c++  java
  • Semaphore

    一个有界的容器:

    /一个有界的集合Set
    class BoundedhashSet<T> {
        private final Set<T> set;
        private final Semaphore sem;
    
        public BoundedhashSet(int count) {
            this.sem = new Semaphore(count);
            this.set = new CopyOnWriteArraySet<T>();
        }
    
        public boolean add(T o) throws InterruptedException {
            //获取信号量,如果不成功就阻塞
            sem.acquire();
    
            //这样写,不好,如果set.add()不成功需要释放一个信号量
    //        if(set.add(o))
    //            return true;
    //
    //        return false;
    
    
            boolean isadded = false;
            try{
                if(set.add(o)){
                    isadded = true;
                    return isadded;
                }
            }finally {
                if(!isadded)
                    sem.release();
            }
            return isadded;
        }
    
        public boolean remove(T o ){
            boolean isremoved = false;
            if(set.remove(o)){
                sem.release();
                return isremoved;
            }
            return isremoved;
        }
    }
  • 相关阅读:
    oracle_case when
    sql记录
    修改tomcat默认编码
    sql server_TED(透明数据加密)
    web请求过程
    freemarker 标签循环list 以及获取下标值
    鼠标操作
    窗口切换
    日历控件
    xpath定位
  • 原文地址:https://www.cnblogs.com/da-peng/p/10028296.html
Copyright © 2011-2022 走看看