信号量Semaphore及模型

简介: 信号量Semaphore

信号量是由大名鼎鼎的计算机科学家迪杰斯特拉(Dijkstra)于 1965 年提出,在这之后的 15 年,信号量一直都是并发编程领域的终结者,直到 1980 年管程被提出来,我们才有了第二选择。目前几乎所有支持并发编程的语言都支持信号量机制,所以学好信号量还是很有必要的。

信号量模型还是很简单的,可以简单概括为:一个计数器,一个等待队列,三个方法。在信号量模型里,计数器和等待队列对外是透明的,所以只能通过信号量模型提供的三个方法来访问它们,这三个方法分别是:init()、down() 和 up()。

这三个方法详细的语义具体如下所示。
init():设置计数器的初始值。
down():计数器的值减 1;如果此时计数器的值小于 0,则当前线程将被阻塞,否则当前线程可以继续执行。
up():计数器的值加 1;如果此时计数器的值小于或者等于 0,则唤醒等待队列中的一个线程,并将其从等待队列中移除。
这里提到的 init()、down() 和 up() 三个方法都是原子性的,并且这个原子性是由信号量模型的实现方保证的。在 Java SDK 里面,信号量模型是由 java.util.concurrent.Semaphore 实现的,Semaphore 这个类能够保证这三个方法都是原子操作。

目录
相关文章
|
30天前
|
人工智能 缓存 自然语言处理
阿里云百炼AI大模型平台:Token Plan、Coding Plan和节省计划如何选择?有啥区别?
阿里云百炼提供四种大模型API计费模式:按量付费(含100万Token免费额度)、Token Plan(团队多模态统一Credits)、Coding Plan(个人开发者9万次/月)及AI节省计划(承诺消费享最高5.3折)。本文从计费逻辑、适用场景、价格对比三方面帮你选最省钱方案。
245 1
|
1月前
|
API 异构计算
类Jev项目Kev从入门到实战(6):Jev / Kev / Laya 对比
Jev闭源不可训,Laya轻量但微调难,Kev是唯一支持本地微调的开源方案(Apache-2.0),兼容Jev API,可将业务规则、领域知识注入模型,真正实现“数据进模型”。
432 0
|
2月前
|
运维 调度
跨境独立站如何选香港云线路?CN2 GIA / BGP优化 /国际线路对比
本文详解香港云服务器三大网络线路:CN2 GIA(内地低延迟、高稳定,适合国内为主访客)、BGP优化(兼顾内地与东南亚,性价比优)、普通国际线(纯海外访问,成本最低)。含原理对比、选型指南、真伪验证方法及避坑提示,助您精准匹配业务需求。
|
2月前
|
人工智能 测试技术 API
阿里云Token Plan怎么使用?先订阅Token Plan、然后获取API Key和Base URL,在AI工具中调用即可
阿里云Token Plan接入指南:需先订阅,再获取以`sk-sp-`开头的API Key和专属Base URL(如`token-plan.cn-beijing.maas.aliyuncs.com`),仅支持可配置自定义端点的AI工具(如Cursor、Qwen Code等)。三套计费体系凭证完全隔离,混用将导致鉴权失败或误扣费。
572 0
|
存储 网络安全 数据处理
阿里云对象存储OSS计费模式按量付费和包年包月选择攻略
阿里云OSS对象存储计费模式分为按量付费和包年包月,默认开通OSS就是按量付费,购买资源包抵扣OSS费用的方式属于包年包月计费模式
4058 0
阿里云对象存储OSS计费模式按量付费和包年包月选择攻略
|
3月前
|
前端开发 安全 Shell
Agent 小知识 | Agent 编排的三种方式:ReAct、Plan-and-Execute 与 Workflow Graph
本文深入解析Agent编排三大范式:ReAct(动态探索未知路径)、Plan-and-Execute(目标明确、可调整的结构化执行)与Workflow Graph(规则固化、安全可控的流程图)。三者非替代关系,而是按任务确定性分层协同——主干用Workflow守边界,子任务用Plan组织,细节用ReAct灵活应对。
337 0
Agent 小知识 | Agent 编排的三种方式:ReAct、Plan-and-Execute 与 Workflow Graph
|
3月前
|
人工智能 安全 持续交付
阿里云国际渠道代理商:无影云电脑批量部署教程 快速构建全球云上办公环境
2026年,企业出海面临硬件交付慢、数据合规难、算力不灵活、国际开户风控严四大挑战。阿里云国际版“无影云电脑”依托全球节点与分钟级弹性调度,支持千人级批量部署、自定义镜像分发及AD/LDAP统一身份管理,助力企业构建安全、合规、高效的全球化数字办公空间。(239字)
|
4月前
|
数据采集 供应链 监控
1688评论接口:B2B电商自动化运营与数据风控的核心抓手
1688官方评论接口(alibaba.trade.rate.get)是合规、结构化获取B2B商品评价的唯一标准通道,支持批量、时序化拉取评分、SKU评价、追评等核心字段,赋能货源风控、智能选品、竞品分析、舆情监控与产品迭代,助力电商系统实现数据驱动自动化运营。
382 1
|
4月前
|
SQL 分布式计算 OLAP
Hologres + Flink 实时OLAP分析实战:从T+1报表到秒级洞察的数据平台
运营每天早上等2小时才能看到昨天的销售报表,大促实时数据全靠手工导Excel——这是多数企业的真实困境。我在一个日均订单50万+的电商平台中,基于阿里云 Hologres + Flink 搭建实时OLAP分析平台后,实现数据5秒入库、大屏秒级响应、报表从T+1升级到秒级。本文从传统OLAP痛点出发,详解Hologres架构原理、实例创建与表设计、Flink实时管道搭建、Spring Boot集成、数据治理,以及5个生产踩坑实录和OLAP选型决策树。
|
Ubuntu 测试技术 开发工具
ESP32-C3入门教程 基础篇(一、ADC采样)
经过前面的折腾,设计好了自己的测试开发板 搭建好了开发环境, 然后正式开始进行功能测试了,测试顺序先从简单的开始吧,一步一步来
2743 1
ESP32-C3入门教程 基础篇(一、ADC采样)