Java_多线程_信号量

除了锁之外,并发API也支持计数的信号量。不过锁通常用于变量或资源的互斥访问,信号量可以维护整体的准入许可。这在一些不同场景下,例如你需要限制你的程序某个部分的并发访问总数时非常实用。

ExecutorService service=Executors.newFixedThreadPool(10);
Semaphore semaphore=new semaphore(5);
Runnable task=new Runnable(){
	boolean permit=false;
	public void run(){
		try{
			permit=semaphore.tryAcquire(1,TimeUnit.SECONDS);
			if(permit){
				System.out.println("ok");
				Thread.sleep(5000);
			}else{
				System.out.println("no");
			}
		}catch(Exception e){
		}finally{
			semaphore.release();
		}
	}
}

for(int i=0;i<10;i++){
	service.submit(task);
}
发布了359 篇原创文章 · 获赞 26 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/Chill_Lyn/article/details/104156512
今日推荐