使用信号量Semaphore循环打印ABC

这篇博客介绍了如何利用Java并发包中的Semaphore信号量来实现循环打印ABC。通过Semaphore控制线程同步,确保线程1打印A,线程2打印B,线程3打印C的顺序,从而达到串行打印的效果。文章中提供了具体的代码示例。
摘要由CSDN通过智能技术生成

最近学习了java的并发相关知识,了解了一下java.util.concurrent包,今天介绍的是concurrent包下的Semaphore,又称为信号量。
信号量主要用来控制同时访问同一资源的线程 数量,用jdk api官方的话说就是:
Semaphores are often used to restrict the number of threads than can access some (physical or logical) resource. 大意就是Semaphore是用来限制访问一些资源的线程数量,其中有两个重要的方法acquire()和release()。acquire用来获取一个信号量,并且是阻塞型的,如果当前还有可用的信号量,则获取成功,可用信号量减1,使用完后可用release释放信号量。jdk api描述如下:
A counting semaphore. Conceptually, a semaphore maintains a set of permits. Each acquire() blocks if necessary until a permit is available, and then takes it. Each release() adds a permit, potentially releasing a blocking acquirer.
下面将使用Semaphore实现循环打印ABC的功能,即有三个线程,线程1打印A,线程2打印B,线程3打印C,最后输出ABCABCABCABC…,相等于使用多线程实现了串行打印的功能,下一篇我将会介绍CountDownLatch及join两种方式实现并行打印的功能。
代码如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值