并发新构件之Semaphore:信号量
2024-09-06 05:07:12
Semaphore :JDK描述,通常用于限制可以访问某些资源(物理或逻辑的)的线程数目。一句话说明了他的作用。信号量有一个虚拟的许可证池,new Semaphore(10);构造一个含有10个许可证的信号量。
acquire():获取一个许可证,在方法返回之前线程被阻塞
acquire(N):获取N个许可证,在方法返回之前线程被阻塞
release():释放1个许可证,将其返还给信号量对象
release(N):释放N个许可证,将其返还给信号量对象
最简单的例子(摘自https://www.cnblogs.com/limingluzhu/p/4870871.html)
package com.houjun.current.newClassBank; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore; /**
* @Author: HouJun
* @Date: 2019/10/18 15:25
* @Description: 信号量最简单的测试例子
* @version: 1.0
*/
public class SemphoreTest {
public static void main(String[] args) {
ExecutorService executorService = Executors.newCachedThreadPool();
Semaphore semphore = new Semaphore(5);//包含5个许可证
for (int i = 0; i < 20; i++) {
final int no = i;
executorService.execute(new Runnable() { @Override
public void run() {
try {
semphore.acquire();//获取许可
System.out.println("Accessing : "+no);
Thread.sleep(2000);//等待两秒,查看输入效果
semphore.release();//访问完毕,释放
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
} }
}
最新文章
- 开源组件ExcelReport 1.5.2 使用手册
- Cnblogs自定义皮肤css样式-星空观测者
- jquery 替换img 属性
- 走进spring之springmvc实战篇(一)
- 基础笔记3(二)(专门处理String的正则表达式)
- qt-5.6.0 移植之qt源码编译
- 以一个权限系统来告别WebForm —开篇
- Linux下数据库的安装和使用
- MVC Razor模板引擎输出HTML或者生产HTML文件
- java使用org.apache.poi读取与保存EXCEL文件
- 七牛云存储官方接口PHP版本
- Winform TreeView控件技巧
- 深入了解JavaScript中的for循环
- 一些关于poi导入的样例
- Bootstrapping (compilers) - Wikipedia, the free encyclopedia
- Quick Cocos2dx MVC初步
- 怎么在Mac上安装Tomcat 7[转载]
- Confluence 6 配置推荐更新邮件通知默认的初始化设置
- sqoop导入数据到hive中元数据问题
- 用Akka构建一个简易的分布式文件系统