Semaphore

简介:   import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Semaphore; public class SemaphoreTest { //假若一个工厂有5台机器,但是有8个工人,一台机器同时只能被一个工人使用,只有使用完了, //其他工人才能继续使用。

 

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;

public class SemaphoreTest {

	//假若一个工厂有5台机器,但是有8个工人,一台机器同时只能被一个工人使用,只有使用完了,
	//其他工人才能继续使用。那么我们就可以通过Semaphore来实现
	 public static void main(String[] args) {
		 ExecutorService newFixedThreadPool = Executors.newFixedThreadPool(10);
		 int num = 5 ;
		 long start = System.currentTimeMillis();
		 Semaphore semaphore = new Semaphore(num);
		 for (int i = 0; i < 8; i++) {
			newFixedThreadPool.submit(new SemaphoreRunnable(semaphore));
		}
		 long end = System.currentTimeMillis(); 
		 newFixedThreadPool.shutdown();
		 
	 }

	 
	 public static class SemaphoreRunnable implements Runnable{
		private  Semaphore semaphore;
		 
		public SemaphoreRunnable(Semaphore semaphore) {
			this.semaphore = semaphore;
		}

		@Override
		public void run() {
			try {
				 long start = System.currentTimeMillis();
				 semaphore.acquire();
				 //Do some Thing
				 
				 Thread.sleep(1000);
				 semaphore.release();
				 long end = System.currentTimeMillis();
				 System.out.println(System.currentTimeMillis() +"=========" + (end-start)/1000);
			} catch (InterruptedException e) { 
				e.printStackTrace();
			}
		}
		 
	 }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

捐助开发者 

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(支持支付宝和微信 以及扣扣群),没钱捧个人场,谢谢各位。

 

个人主页http://knight-black-bob.iteye.com/



 
 
 谢谢您的赞助,我会做的更好!

 

目录
相关文章
Semaphore 使用详解
本文主要对Semaphore 的相关知识点进行了介绍和讲解
146 0
|
8月前
|
数据库连接
认识 Semaphore
认识 Semaphore
61 0
|
Java 数据库连接 API
【JUC】信号量Semaphore详解
【JUC】信号量Semaphore详解
192 0
【JUC】信号量Semaphore详解
Semaphore(信号量)介绍以及实例
Semaphore(信号量)介绍以及实例
192 0
Semaphore(信号量)介绍以及实例
|
监控 数据库连接
呵,Semaphore ,就这?(一)
那么本篇文章我们继续来和你聊聊并发工具类的第二篇文章 --- Semaphore 。
130 0
呵,Semaphore ,就这?(一)
|
Java
呵,Semaphore ,就这?(二)
那么本篇文章我们继续来和你聊聊并发工具类的第二篇文章 --- Semaphore 。
132 0
呵,Semaphore ,就这?(二)
并发编程之Semaphore信号量
`Semaphore` 翻译过来就是信号量, 其根本原理就是基于 `CAS` 共享锁的一种实现。举一个例子。 假设停车场只有三个车位,一开始三个车位都是空的。这时如果同时来了五辆车,看门人允许其中三辆不受阻碍的进入,然后放下车拦,剩下的车则必须在入口等待,此后来的车也都不得不在入口处等待。这时,有一辆车离开停车场,看门人得知后,打开车拦,放入一辆,如果又离开两辆,则又可以放入两辆,如此往复。
185 0
Semaphore 信号量源码分析
Semaphore 信号量源码分析
Semaphore 信号量源码分析
|
Java 开发工具
信号量Semaphore及模型
信号量Semaphore
137 0
Semaphore信号量
Semaphore 可以用来限制或管理数量有限资源的使用情况 - 信号量的作用是用来维护一个“许可证”,的计数,线程可以获取 许可证,那信号量剩余许可证就减一,线程也可以是否一个许可证,那剩余的许可证就加一,当信号量拥有的许可证为0时,那么下一个线程想获得许可证,就要进行等待,直到另外线程释放许可证
289 0
Semaphore信号量

热门文章

最新文章