Semaphore - jdk1.5并发包

来源:互联网 发布:数据ev值是什么意思 编辑:程序博客网 时间:2024/05/07 16:46

Java中Semaphore是一个同步类,它维护了指定数量的权限。当前线程需要访问共享内存时需要获取权限,如果该权限被其它线程占有将会等待直到释放权限。这种同步策略可以用来实现生产者消费者问题以及应用在线程池、数据库连接池中。

Semaphore类初始化时指定权限数,它提供了两个主要的方法acquire()和release()用于获取和释放权限。acquire()方法阻塞至有可用的权限,使用Semaphore可以实现线程间的互斥。

Semaphore使用实例

import java.util.concurrent.Semaphore;public class SemaphoreTest{Semaphore binary = new Semaphore(1);public static void main(String[] args) {final SemaphoreTest test = new SemaphoreTest();new Thread(){public void run(){test.mutualExclusion();}}.start();new Thread(){public void run(){test.mutualExclusion();}}.start();}private void mutualExclusion(){try{binary.acquire();// mutual exclusive regionSystem.out.println(Thread.currentThread().getName() + " inside mutual exclusive region");Thread.sleep(1000);}catch (InterruptedException ie) {ie.printStackTrace();}finally{binary.release();System.out.println(Thread.currentThread().getName() + " outside of mutual exclusive region");}}}

output:

Thread-0 inside mutual exclusive region
Thread-0 outside of mutual exclusive region
Thread-1 inside mutual exclusive region
Thread-1 outside of mutual exclusive region



0 0
原创粉丝点击