一个最简单的实例理解Semaphore在Java中的作用

前言

阅读本篇文章,你需要先理解以下知识:

  • Java基础知识
  • Thread多线程(点我跳转
  • 击鼓传花的玩法

你有没有和小伙伴们玩过击鼓传花这个游戏?多个人同时只有“一朵花”的情况下,只有一个人最后会“中奖”。Semaphore就像击鼓手一样控制着这朵“花”究竟“花落谁家”。

当然了,Semaphore不只支持调度一朵花。

它在Java中常被用于线程的调度,当有多个线程访问同一个资源时,我们可以让线程尝试从Semaphore获取一个许可证,如果该线程尝试访问的对象正在被其它线程占用,该线程将无法获取许可证,即循环等待重新获取。

Semaphore并不难理解,请不要被下面一大串代码所劝退,认真试验下去。

拷贝

等等! 在拷贝之前你要知道,下面的代码有3中测试模式,将test的值改为1/2/3会开启不同的代码段,它们的难度是不一样的。

好的。现在打开你的IDE,新建一个项目或类,将类命名为SemaphoreTest,并将下面的代码替换到你的项目中:

… …查看全文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值