信号量的实现和应用实验报告_Java高级编程基础:原子信号量操作实现组线程执行管理...

3b1cf13af286c248dcf4865752459a66.png

前言

由于Java高级并发编程主要是针对多线程并发访问公共资源控制来展开的,而现在服务器大多都是多核处理,所以在执行控制中,单一的同步锁无法满足需要,为此Java 1.5开始引入了三个重要的概念Semaphores,CountDownLatch和CyclicBarrier其实这三个实现类都是基于以整型原子操作状态值操作的执行控制类。

严格意义上讲,它们都是对原子操作int类型表示状态来控制锁操作的封装。我们知道,在原子类型操作中,我们避免了使用锁机制而采用CAS机制达到了操作的原子性不可中断,从而乐观的实现了共享资源的访问。

但是在我们现实开发中,有很多场景需要对多个操作进行分组控制,也就是说允许指定数量的线程进入临界区操作。

这种情况常见于各类池化原理实现上。比如我们有一个提供多线程处理的服务,每次允许5个客户端接入,超过5个就需要排队等待。

如此我们就需要一个组控制机制来实现。为此我们可以封装一个由原子int类型变量表示的计数器,由这个计数器来统计每次进入临界区的线程数量,通过原子读取和增减来决定等待队列线程的获取进入许可,同时当线程离开临界区后,将计数器恢复。

依次来实现对线程的组控制。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值