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();
}
}
});
} }
}
 

最新文章

  1. 开源组件ExcelReport 1.5.2 使用手册
  2. Cnblogs自定义皮肤css样式-星空观测者
  3. jquery 替换img 属性
  4. 走进spring之springmvc实战篇(一)
  5. 基础笔记3(二)(专门处理String的正则表达式)
  6. qt-5.6.0 移植之qt源码编译
  7. 以一个权限系统来告别WebForm —开篇
  8. Linux下数据库的安装和使用
  9. MVC Razor模板引擎输出HTML或者生产HTML文件
  10. java使用org.apache.poi读取与保存EXCEL文件
  11. 七牛云存储官方接口PHP版本
  12. Winform TreeView控件技巧
  13. 深入了解JavaScript中的for循环
  14. 一些关于poi导入的样例
  15. Bootstrapping (compilers) - Wikipedia, the free encyclopedia
  16. Quick Cocos2dx MVC初步
  17. 怎么在Mac上安装Tomcat 7[转载]
  18. Confluence 6 配置推荐更新邮件通知默认的初始化设置
  19. sqoop导入数据到hive中元数据问题
  20. 用Akka构建一个简易的分布式文件系统

热门文章

  1. git submodule 删除及修改
  2. HDU6655 Just Repeat(2019杭电多校J题)
  3. upc组队赛7 Slimming Plan
  4. 05、python的基础--&gt;字典的增、删、改、查
  5. 使用 C++ 编写的基础 Windows 服务 (CppWindowsService)
  6. sed(seream editor)流编辑器
  7. 聊聊redis实际运用及骚操作
  8. change transformation file in PI interface
  9. 防御 CSRF
  10. HTML CSS的中英文对照