JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

java中锁扩展Semaphore java中的锁怎么实现

wys521 2024-11-06 20:35:50 精选教程 65 ℃ 0 评论

Semaphore又称信号量,是操作系统中的一个概念,在Java并发编程中,信号量控制的是线程并发的数量。

信号量为多线程协作提供了更为强大的控制方法。广义上说,信号量是对锁对扩展,无论的内部锁synchronized还是重入锁ReentrantLock,一次都只运行一个线程访问一个资源,而信号量却可以指定多个线程同时访问某一个资源。信号量主要两个构造方法。

Semaphore(int num)
Semaphore(int num, boolean how) //第二个参数可以指定是否公平

在构造信号量对象时,必须要指定信号量的准人数,即同时能申请多少个许可。当每个线程每次只能申请一个许可时,这就相当于指定了同时有多个线程可以访问某一个资源。信号量的主要逻辑方法有:

public void acquire()
public void acquireUninterruptibly()
public boolean tryAcquire()
public boolean tryAcquire(long timeout, TimeUnit unit)
public void release(int permits) 

acquire()方法尝试获得一个准入的许可。若无法获得则线程等待。直到有线程释放到一个许可或者当前线程被中断。acquireUninterruptibly()方法和acquire() 方法类似。但是不会相应中断,tryAcquire() 尝试获得一个许可,如果成功就返回true,失败返回false,它不会进行等待,立即返回。release() 用于在线程访问资源结束后,释放一个许可,以使其他等待许可的线程可以进行资源访问。

文版权归是三僡然所有,转载请标明出处。欢迎转载,欢迎评论,欢迎分享。如果你有文章想分享可以联系我。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表