JDK5 Semaphore信号量
来源:互联网 发布:淘宝申请信用卡在哪里 编辑:程序博客网 时间:2024/06/06 04:33
Semaphore 在许可可用前会阻塞每一个
acquire()
,然后再获取该许可。每个 release()
添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore
只对可用许可的号码进行计数,并采取相应的行动。Semaphore 通常用于限制可以访问某些资源(物理或逻辑的)的线程数目。
package com.skydream.thread.Semaphore;import java.util.concurrent.Semaphore;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class Task {private static final int MAX_THREAD_COUNT = 5;private Semaphore objSempahore = new Semaphore(MAX_THREAD_COUNT);Lock lock = new ReentrantLock();public void task() {//lock.lock();try {objSempahore.acquire();System.out.println(MAX_THREAD_COUNT-objSempahore.availablePermits());Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{objSempahore.release();//lock.unlock();}}}
package com.skydream.thread.Semaphore;public class SempahoreTest {/** * @param args */public static void main(String[] args) {final Task objTask = new Task();for(int i=0;i<20;i++){new Thread(){public void run() {objTask.task();};}.start();}}}
最多只能有5个线程进入task方法。
- JDK5 Semaphore信号量
- 信号量semaphore
- 信号量Semaphore
- 信号量semaphore
- 信号量Semaphore
- 信号量Semaphore
- 信号量Semaphore
- 信号量semaphore
- semaphore信号量
- 信号量Semaphore
- 信号量 semaphore
- 信号量 semaphore
- 信号量Semaphore
- Semaphore信号量
- 信号量semaphore
- 信号量Semaphore
- Semaphore (信号量)
- Semaphore(信号量)
- Linux下用来获取各种系统信息的C++类
- 黑马程序员--ADO.NET中连接数据库的问题
- List
- cmalloc和malloc
- 揭开正则表达式的神秘面纱
- JDK5 Semaphore信号量
- Connect the Cities
- 从去年8月到今年8月 - 一个苦逼程序猿的技术历程
- c/c++程序编译连接过程
- [心得]关于C语言中对用户输入选择选项的校验的一个思路
- 高效判断素数方法
- 左旋转字符串
- jsessionid释疑解惑
- 初识struts2