Semaphore Exchanger 原理总结

参考链接:
http://ifeve.com/concurrency-exchanger/
http://ifeve.com/concurrency-semaphore/
https://www.cnblogs.com/nullzx/p/5270233.html

Semaphore

概念:用来控制并发线程数,好比当前道路只能容纳100辆车,未到达100的时候,就可以进去,到了100的话,就进不去了,除非进去的车再出去,那么后面的才可以继续进入。这里面车相当于线程,出去的车相当于线程执行完毕,看见红灯的车相当于阻塞队列中的任务,在道路里面的车相当于正在执行的线程。
基于底层的原理:
AQS(AbstractQueuedSynchronizer)实现线程的管理。Semaphore有两个构造函数,参数permits表示许可数,它最后传递给了AQS的state值。线程在运行时首先获取许可,如果成功,许可数就减1,线程运行,当线程运行结束就释放许可,许可数就加1。如果许可数为0,则获取失败,线程位于AQS的等待队列中,它会被其它释放许可的线程唤醒。
这里修改许可数都是通过CAS进行交换。

Exchanger

说白了就是两个线程到了一个同步点才能互相交换数据。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值