位置: 编程技术 - 正文

Java 信号量 Semaphore 介绍(java 信号量 超时)

编辑:rootadmin

推荐整理分享Java 信号量 Semaphore 介绍(java 信号量 超时),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:java信号量semaphore加队列,java信号量semaphore加队列,java信号量semaphore实现线程池,java信号量semaphore,java信号量semaphore使用,java信号量semaphore使用,java信号量semaphore使用,java信号量semaphore实现线程池,内容如对您有帮助,希望把文章链接给更多的朋友!

semaphore类也是java1.5出现的,位于java.util.concurrent包下

首先看下他的文档解释:

一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动,他有二个非常重要的方法,一个是acquire,一个是release方法

现在看下这二个方法的介绍

从此信号量获取一个许可,在提供一个许可前一直将线程阻塞,否则线程被中断。获取一个许可(如果提供了一个)并立即返回,将可用的许可数减 1。Java 信号量 Semaphore 介绍(java 信号量 超时)

如果没有可用的许可,则在发生以下两种情况之一前,禁止将当前线程用于线程安排目的并使其处于休眠状态:

某些其他线程调用此信号量的 release() 方法,并且当前线程是下一个要被分配许可的线程;或者其他某些线程中断当前线程。

如果当前线程:

被此方法将其已中断状态设置为 on ;或者在等待许可时被中断。

则抛出 InterruptedException,并且清除当前线程的已中断状态。

抛出:InterruptedException - 如果当前线程被中断释放一个许可,将其返回给信号量。释放一个许可,将可用的许可数增加 1。如果任意线程试图获取许可,则选中一个线程并将刚刚释放的许可给予它。然后针对线程安排目的启用(或再启用)该线程。

不要求释放许可的线程必须通过调用 acquire() 来获取许可。通过应用程序中的编程约定来建立信号量的正确用法。

现在写个例子验证下

面的例子只允许5个线程同时进入执行acquire()和release()之间的代码

结果:

线程pool-1-thread-1进入,当前已有线程pool-1-thread-2进入,当前已有线程pool-1-thread-4进入,当前已有线程pool-1-thread-6进入,当前已有线程pool-1-thread-5进入,当前已有线程pool-1-thread-6即将离开线程pool-1-thread-8进入,当前已有线程pool-1-thread-4即将离开线程pool-1-thread-9进入,当前已有线程pool-1-thread-8即将离开线程pool-1-thread-进入,当前已有线程pool-1-thread-5即将离开线程pool-1-thread-3进入,当前已有线程pool-1-thread-1即将离开线程pool-1-thread-7进入,当前已有线程pool-1-thread-2即将离开线程pool-1-thread-进入,当前已有线程pool-1-thread-即将离开线程pool-1-thread-进入,当前已有线程pool-1-thread-即将离开线程pool-1-thread-进入,当前已有线程pool-1-thread-3即将离开线程pool-1-thread-进入,当前已有线程pool-1-thread-即将离开线程pool-1-thread-进入,当前已有线程pool-1-thread-7即将离开线程pool-1-thread-进入,当前已有线程pool-1-thread-9即将离开线程pool-1-thread-进入,当前已有线程pool-1-thread-即将离开线程pool-1-thread-进入,当前已有线程pool-1-thread-即将离开线程pool-1-thread-进入,当前已有线程pool-1-thread-即将离开线程pool-1-thread-进入,当前已有线程pool-1-thread-即将离开线程pool-1-thread-即将离开线程pool-1-thread-即将离开线程pool-1-thread-即将离开线程pool-1-thread-即将离开

java 使用Callable和Future返回线程执行的结果 我们可能在某些特殊的需求下需要返回一个线程执行的结果,在java1.5提供了Callable和Futrue就能帮你实现!不解释看代码packagecn.kge.com;importjava.util.concurrent.Cal

Java之CyclicBarrier使用 1:CyclicBarrier类说明一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点(commonbarrierpoint)。在涉及一组固定大小的线程的程序中,这些

Android组建4:android中需要注意的几个地方 (1)Android代码导入之后经常碰到API不符合的情况。这种情况下,可以选中工程,右击选择properties属性。然后选择android。选择你当前有的API进行加载。

标签: java 信号量 超时

本文链接地址:https://www.jiuchutong.com/biancheng/386853.html 转载请保留说明!

上一篇:Android布局的优化(android中的常用布局有哪几种?)

下一篇:java 使用Callable和Future返回线程执行的结果(java 使用jar包)

  • 支付国外佣金代扣代缴增值税
  • 房产税的计算方法举例说明
  • 附加税的内容有哪些
  • 小规模纳税人单张发票最大金额
  • 销项税额计算公式依据
  • 增值税票是什么
  • 燃气费的账务处理
  • 投资性房地产收入计入什么科目
  • 非利息净收入包括营业外收入吗
  • 上月未计提税金,下月怎么做分录
  • 支付利息的诉讼请求
  • 材料含税价怎么算
  • 开出转账支票用什么凭证
  • 企业未实际列支教育经费要纳税调整吗?
  • 增值税抵扣进项税额交税账务处理
  • 增值税月报时间
  • 没有缴纳契税
  • 建筑企业在增值税方面新出台的政策
  • 会计学考研考哪些科目专硕
  • 长期股权投资的初始计量
  • 无票收入报税后,后期又开票出去怎么处理?
  • 企业残疾人保障金的缴纳标准
  • 工资现金发放的零头入账
  • 主板类型大全
  • 企业扶贫有什么优惠政策
  • 原材料进口关税计入成本吗
  • 免税收入要减去吗
  • 收到银行电子汇票已入账怎么做账
  • 王者荣耀中甄姬的cp是谁
  • 10款手机赚钱软件下载
  • 外贸企业出口退税计算
  • 农民专业合作社税收优惠政策
  • 为什么u盘里的文件无法删除
  • 企业与政府所签的合同
  • 年底所得税账务处理
  • 辅助生产成本是
  • php生成时间戳
  • 企业生产经营管理费用包括
  • laravel 5.1下php artisan migrate的使用注意事项总结
  • IIS 7.5 asp Session超时时间设置方法
  • 编写一个php程序,展示双引号和单引号的区别
  • 微信h5页面设计
  • 冲销暂估入账应该填什么凭证
  • 增值税抄税报税流程
  • css面试题及答案
  • chkconfig命令参数
  • 待摊费用和预提费用属于什么账户
  • 怎样合理的运用网络
  • 延迟开票如何规避风险
  • sql server中变量声明的命令是什么
  • 现金发放工资会计科目怎么写
  • 职工短期薪酬包括哪些
  • 存货和固定资产一经计提减值以后期间不得转回
  • 增值税药品发票明细
  • 企业减少注册资本
  • 用于餐厅的不锈钢餐具
  • 会计账簿有哪些作用
  • 已认证的发票要冲红要退票吗
  • 无法收回的款项怎么记账
  • 个人怎么缴纳五险一金
  • 中标违约保证金怎么退
  • 实缴制下未到位资金
  • 营业外收入算未开票收入吗
  • 利息税额计算公式
  • 车间管理人员工资属于间接费用吗
  • sql实现分页查询语句
  • 宏基aspire s3适用固态硬盘
  • CentOS操作系统
  • 如何清理浏览器缓存
  • sf2是什么文件
  • android内存工具
  • 骨头动漫头像
  • node urlencode
  • js确认框s弹出框确定和取消
  • 谈一谈js中的执行者是谁
  • exe取消隐藏属性
  • android4.4.2升级包
  • 云南省电子税务局怎么改号码
  • 增值税抵扣联怎么装订
  • 调研报告与调研文章的区别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设