栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【JAVA 并发编程学习】01 - Semaphore 信号量

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【JAVA 并发编程学习】01 - Semaphore 信号量

文章目录
  • Semaphore
  • Semaphore 的创建
  • Semaphore API

Semaphore

计数信号量,用于限制某些(物理或逻辑)资源的线程数。
我先来说一个场景,这样能更好去理解。
就拿小区停车场来说这个,某小区停车场最多只能停 100 辆车,每停进去一辆车,停车场的空位就减一,出来一辆车,停车场的空位就加一,当停车场停进去 100 辆车后,如果还有车辆想停进去要么在外面等待,要么去其他地方去停车,如果说这个停车场只有一个出入口的话还是很好去控制的,但是如果停车场有很多个出入口,就可以用到 Semaphore 信号量来实现出入车对停车场空位的控制。

Semaphore 的创建

两个参数构造函数,第一个参数是设置可以使用的许可数量(根据上面的场景,可以理解为设置停车场的空位),第二个参数是公平(true)或者非公平(false)参数,公平参数是让线程按照先入先出的顺序依次去操作共享资源,非公平参数则是让所有等待的线程去争这个操作共享资源的使用权。

单个参数构造函数,参数是设置可以使用的信号量,在这里要注意的是,使用单参的话,会默认创建非公平信号量。

Semaphore API
方法名称备注
acquire从信号量中获得一个许可,如果没有许可则阻塞,直到获取到许可
tryAcquire从信号量中获得一个许可,获取到则返回 true,获取不到则返回 false
release释放一个许可返回给信号量
availablePermits从信号量中获得可用的许可数量

这几个就是常用的几个信号量的方法。





End


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/591655.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号