并发编程系列之十八多线程使用Semaphore

Semaphore作为synchronized的增强版,用于限制并发线程的数量。通过acquire()和release()方法控制线程的进入和离开,确保不超过预设的并发数。例如,创建20个线程,使用Semaphore限制并发数为5,实现线程等待和并发执行的效果。

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

Semaphore:

 可以理解为 synchronized 的加强版,作用是控制线程的并发数量。就这一点而言,单纯的synchronized 关键字是实现不了的。

semaphore.acquire(2) 表示每次线程进入将会占用2个通路,semaphore.release(2) 运行时表示归还2个通路。没有通路,则线程就无法进入代码块。代表信号量的释放与使用。必须由获取它的线程释放

 示例1.通过建立线程池20个线程池,使用semaphore来进行5个线程同时并发。


import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;

/**
 *          Create on 2020年1月22日上午11:57:47     @author 脚踏实地,2020涅槃重生     
 *  @version 1.0 
 * 
 * @Description:    
 */
public class SemaphoreDemo {

	public static void main(String[] args) {
		// 使用可缓存的线程池
		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苦思冥想行则将至

穷,有钱的大爷上个两分钱吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值