java同步器有哪些_java 同步器 Semaphore、

一、Semaphore(信号量)

注解:信号量,其实就是定义一定的数量,只有释放一个才能进去下一个,其余都得进入等待状态。比如有2个洗手间,有5个人要上洗手间,这时候只能有2个人先使用(也就是acquire),其余人只能等着。等到其中一人使用完成(也就是release),下一个人才能使用。

//定义一个信号量有2个位置

Semaphore semaphore = new Semaphore(2);

@RequestMapping("thread")

public int test() {

//多开几个线程

for (int i = 0; i < 5; i++) {

//练习下信号量

new Thread(() ->

{

try {

//判断有无当前信号量位置

if (semaphore.availablePermits() > 0) {

System.out.println(Thread.currentThread().getName() + "有当前信号量位置");

} else {

System.out.println(Thread.currentThread().getName() + "有当前信号量无位置,进入等待");

}

semaphore.acquire();

System.out.println(Thread.currentThread().getName() + "已拿到当前信号量");

Thread.sleep(1000);

semaphore.release();

System.out.println(Thread.currentThread().getName() + "已释放当前信号量");

} catch (Exception ex) {

}

}).start();

}

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值