package semaphore;
import java.util.concurrent.Semaphore;
public class SemaphoreAcquire {
/**
* @Title: 测试Semaphore的初始许可,是否是最大许可
* @Description: TODO(这里用一句话描述这个方法的作用)
* @param @param args 设定文件
* @return void 返回类型
* @throws
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Semaphore s = new Semaphore(1);
System.out.println("当前许可数:"+s.availablePermits());
s.release();
System.out.println("当前许可数:"+s.availablePermits());
Consumer c1 = new Consumer(s,2);
c1.setName("testSemaphore");
c1.start();
System.out.println("Semaphore 初始化时给的许可,只是初始值,每release一次,就会有一个许可,用sempahore做流控需要注意");
}
}
class Consumer extends Thread{
private Semaphore s;
private int acquires;
public Consumer(Semaphore s,int acquires){
this.s = s;
this.acquires = acquires;
}
@Override
public void run(){
s.acquireUninterruptibly(acquires);
System.out.println("获得 "+acquires+" 个许可");
}
}
转载于:https://my.oschina.net/sharkbobo/blog/269982