Java多线程之Semaphore信号量

本文介绍了信号量Semaphore的概念及其在进程间通信中的应用。Semaphore是一种共享锁机制,允许多个线程同时访问临界区资源。文章详细解释了Semaphore的创建、获取及释放过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6557874.html 

    学过操作系统的对 信号量 这个词应该不陌生,它是用来进行进程间通信,控制对 临界区(即同步代码块) 的访问的。

    Semaphore与syncrhoized、ReentrantLock加锁的方法不同,后两者是针对一把锁来实现同步互斥的(一个时刻只能有一个线程持有该锁),而Semaphore是一个共享锁,允许多个线程同时持有它,即同一时刻允许有多个线程同时操作临界区。只有当信号量为0时,申请进入临界区的线程才阻塞。

    使用信号量分为:

    1:创建信号量,指定有共享名额:e.g. final Semaphore semaphore = new Semaphore(3);

    2:在需要进入临界区(同步代码块)时,申请获得信号量。如果获得成功,就会进入临界区执行,并且信号量共享名额会自动减一;如果信号量已经为0,则申请失败,阻塞线程:semaphore.acquire();

      {临界区代码......} 

    3:执行完同步代码后,释放信号量,此时信号量+1:{临界区代码...;}

                                                                         semaphore.release();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值