博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Semaphore
阅读量:6471 次
发布时间:2019-06-23

本文共 973 字,大约阅读时间需要 3 分钟。

hot3.png

Semaphore(信号量)

     相当于阻塞队列一样,semaphore相当于一个令牌许可,如果你设置了20个许可,则一次最多只能同时并发20个线程。初始令牌为0,每次执行一个线程,则acquire一个令牌,如果令牌不够,则阻塞,当线程用完的时候,release掉一个令牌。下面是Demo:

public static void main(String[] args) throws Exception {        ExecutorService executorService = Executors.newCachedThreadPool();        Semaphore sem = new Semaphore(20);        for (i = 0; i < 200; i++) {            Runnable runnable = new Thread() {                @Override                public void run() {                    try {                        sem.acquire();   // 获取令牌                        System.out.printf("我拿到了令牌, 现在还剩下["+ sem.availablePermits() +"]\n");                        Thread.sleep(2000);                        sem.release();   // 释放令牌                    } catch (InterruptedException e) {                        e.printStackTrace();                    }                }            };            executorService.execute(runnable);        }    }

转载于:https://my.oschina.net/u/3139515/blog/1571277

你可能感兴趣的文章
spring boot启动定时任务
查看>>
值类型和引用类型
查看>>
查看外键属性
查看>>
[转]html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
查看>>
maven 常用插件
查看>>
朴素贝叶斯方法在乳腺肿块检测中的应用
查看>>
算法 (二分查找算法)
查看>>
java Date 当天时间戳处理
查看>>
C++学习笔记之syntax_2: C++ 预处理命令
查看>>
Python~迭代
查看>>
linux常用命令-关机、重启
查看>>
css布局 - 九宫格布局的方法汇总(更新中...)
查看>>
画图函数——点,线,矩形等等
查看>>
ejabberd_local
查看>>
BZOJ5020 [THUWC 2017]在美妙的数学王国中畅游LCT
查看>>
hdu 6030 矩阵快速幂
查看>>
tomcat类加载机制
查看>>
ado.net2.0中的缓存使用SqlDependency类
查看>>
Java基础学习总结(94)——Java线程再学习
查看>>
iOS开发之调用系统设置
查看>>