码迷,mamicode.com
首页 > 编程语言 > 详细

java多线程之Concurrent.Utils常用类Semaphore详解

时间:2018-06-15 20:09:56      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:分享图片   bsp   oid   string   tor   div   out   AC   exec   

 

 

 

 

 

 

技术分享图片

技术分享图片

代码示例:

public class UseSemaphore {  
  
    public static void main(String[] args) {  
        // 线程池  
        ExecutorService exec = Executors.newCachedThreadPool();  
        // 只能5个线程同时访问  
        final Semaphore semp = new Semaphore(5);  
        // 模拟20个客户端访问  
        for (int index = 0; index < 20; index++) {  
            final int NO = index;  
            Runnable run = new Runnable() {  
                public void run() {  
                    try {  
                        // 获取许可  同时只有5个线程进入执行
                        semp.acquire();  
                        System.out.println("Accessing: " + NO);  
                        //模拟实际业务逻辑
                        Thread.sleep((long) (Math.random() * 10000));  
                        // 访问完后,释放  
                        semp.release();  
                    } catch (InterruptedException e) {  
                    }  
                }  
            };  
            exec.execute(run);  
        } 
        
        try {
            Thread.sleep(10);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        //System.out.println(semp.getQueueLength());
        // 退出线程池  
        exec.shutdown();  
    }  
}  

java多线程之Concurrent.Utils常用类Semaphore详解

标签:分享图片   bsp   oid   string   tor   div   out   AC   exec   

原文地址:https://www.cnblogs.com/xy-blog/p/9185455.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!