《并发编程》--11.允许多个线程同时访问的信号量Semaphpre
来源:互联网 发布:网络管理视频教程下载 编辑:程序博客网 时间:2024/06/05 04:49
信号量为多线程协作提供了更为强大的控制方法。广义上说,信号量是对锁的拓展。无论是内部所synchronized还是重入锁ReentrantLock,一次都只允许一个线程访问一块资源,而信号量却可以指定多个线程数,同时访问一个资源。信号量主要提供一下构造函数;
public Semaphore(int permits) { sync = new NonfairSync(permits); } public Semaphore(int permits, boolean fair) { sync = fair ? new FairSync(permits) : new NonfairSync(permits); }
在构造信号量对象时,必须指定信号量的准入数permits,即同时访问的临界区数量。fair是指定是否公平
以下一个简单的demo,供参考
public class semapDemo implements Runnable {final Semaphore semp = new Semaphore(5); //声明信号量 5个准入数@Overridepublic void run() {try {semp.acquire(); Thread.sleep(2000); //临界区 模拟耗时操作System.out.println(Thread.currentThread().getId()+": 完成!!!");semp.release(); //释放信号量,必须有, //如果发生了信号量泄露(申请了没有释放,进入临界区的线程数会越来越少)} catch (InterruptedException e) {e.printStackTrace();}}public static void main(String[] args) {ExecutorService es = Executors.newFixedThreadPool(20);final semapDemo demo = new semapDemo();for(int i=0;i<20;i++){es.submit(demo);}}}
阅读全文
0 0
- 《并发编程》--11.允许多个线程同时访问的信号量Semaphpre
- JDK并发包---(7)允许多个线程同时访问的:信号量(Semaphore)
- Semaphore 允许多个线程同时访问
- 多个线程同时访问资源
- 并发编程--资源并发访问信号量
- java Semaphore信号亮-允许多个任务同时访问这个资源--thinking in java21.7.6
- [笔记][Java7并发编程实战手册]3.2 资源的并发访问控制Semaphore信号量
- 并发编程(2)-多个线程多个锁
- 使用Semaphore控制某个方法允许并发访问的线程的个数
- (三)线程同步工具集_2---控制并发访问资源的多个副本
- Java: 使用信号量(Semaphore)保护多个共享资源的访问
- 并发实例,10000个http请求同时访问tomcat,tomcat是怎么处理的?
- GCD编程-控制线程最大并发量之信号量
- VB.Net程序设计:跨线程弹出等待提示窗体,允许多个等待提示窗体同时存在。
- 用信号量实现 多个线程间的同步(sem)
- Race Condition引起的性能问题 Race Condition(也叫做资源竞争),是多线程编程中比较头疼的问题。特别是Java多线程模型当中,经常会因为多个线程同时访问相同的共享数据,而
- 线程池(thread pool),允许有多个线程同时存在,并发执行,并且这些线程受到统一管理。
- JAVA 并发编程-多个线程之间共享数据
- 一分钟了解"形容背景很复杂的英语词汇"
- 第7讲项目2-输出最大值
- MySQL中的视图
- iOS 简易钟表实现
- Java三大器(过滤器,拦截器,监听器)之过滤器
- 《并发编程》--11.允许多个线程同时访问的信号量Semaphpre
- PAT (Basic Level) Practise (中文) 1004成绩排名(20)
- SpringMVC的REST风格的四种请求方式
- C# 系统应用之TreeView控件显示树状磁盘文件目录及加载图标
- chkconfig用法及Linux的运行级别
- 【LeetCode】543. Diameter of Binary Tree
- 机器学习之正则化(Regularization)
- 【博览网】C++标准库——第二周课程笔记
- Android:SmartTabLayout使用