java多线程之Semaphore类基本用法
2015-02-04 17:14
351 查看
原文地址:/article/4719073.html
Semaphore翻译成字面意思为 信号量,Semaphore可以控同时访问的线程个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。
Semaphore类位于java.util.concurrent包下,它提供了2个构造器:
下面说一下Semaphore类中比较重要的几个方法,首先是acquire()、release()方法:
acquire()用来获取一个许可,若无许可能够获得,则会一直等待,直到获得许可。
release()用来释放许可。注意,在释放许可之前,必须先获获得许可。
这4个方法都会被阻塞,如果想立即得到执行结果,可以使用下面几个方法:
另外还可以通过availablePermits()方法得到可用的许可数目。
下面通过一个例子来看一下Semaphore的具体使用:
假若一个工厂有5台机器,但是有8个工人,一台机器同时只能被一个工人使用,只有使用完了,其他工人才能继续使用。那么我们就可以通过Semaphore来实现:
Semaphore翻译成字面意思为 信号量,Semaphore可以控同时访问的线程个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。
Semaphore类位于java.util.concurrent包下,它提供了2个构造器:
release()用来释放许可。注意,在释放许可之前,必须先获获得许可。
这4个方法都会被阻塞,如果想立即得到执行结果,可以使用下面几个方法:
下面通过一个例子来看一下Semaphore的具体使用:
假若一个工厂有5台机器,但是有8个工人,一台机器同时只能被一个工人使用,只有使用完了,其他工人才能继续使用。那么我们就可以通过Semaphore来实现:
相关文章推荐
- java多线程之CyclicBarrier类基本用法
- Java多线程(一)基本用法
- java多线程之CountDownLatch类基本用法
- java 多线程之Semaphore互斥类的用法
- Java多线程基本用法总结
- Java中的枚举类型-1:基本用法
- Java第五课 Java的常用包,"=="和"equals"的用法,基本数据类型与引用类型,对象的克隆。
- java中String的基本用法
- [转]java中Property类的基本用法
- 用Java缓存机制创建更快的Web应用----基本用法
- Java中BigInteger的基本用法
- java多线程学习-java.util.concurrent详解(二)Semaphore/FutureTask/Exchanger
- 用Java缓存机制创建更快的Web应用----基本用法
- Java程序员从笨鸟到菜鸟之(四十九)细谈struts2(十一)OGNL表达式的基本语法和用法
- 学习笔记 java多线程 信号量(Semaphore),死锁
- 【java多线程与并发库】---传统java多线程<1>线程基本概念
- java 多线程 同步 synchronized 的个人理解和用法
- java多线程几个方法的基本概念
- 用Java缓存机制创建更快的Web应用----基本用法
- Java并发编程深入研究 -- 第一部分(Java基本的多线程支持)提纲