Semaphore
    在进程方面完成信号线的控制,可以控制某个资源下,可被同时访问的线程个数。对系统的访问量进行评估,信号量维护了一个许可集;在许可前会阻塞每一个 semaphore.acquire() ,然后再获取该许可,每一个release() 添加一个许可,从而
    可能释放一个正在阻塞的获取者,但是,不使用实际的许可对象,Semaphore只对可用许可的号码进去计算,并采取行动,拿到信号量的线程则进入代码,否则就等待。
semaphore.acquire();//1.获取许可
semaphore.release();//3.访问完毕,释放
  1. package demo1;
  2. import java.util.concurrent.ExecutorService;
  3. import java.util.concurrent.Executors;
  4. import java.util.concurrent.Semaphore;
  5. public class DemoSemaphore {
  6. public static void main(String[] args) {
  7. ExecutorService executorService = Executors.newCachedThreadPool();
  8. Semaphore semaphore = new Semaphore(3);
  9. for (int i=0;i<=20;i++){
  10. final int no =i;
  11. Runnable runnable = new Runnable() {
  12. @Override
  13. public void run() {
  14. try {
  15. semaphore.acquire();//1.获取许可
  16. System.err.println("systme:"+no);
  17. Thread.sleep((long) (Math.random()*1000));//2.模拟业务耗时
  18. semaphore.release();//3.访问完毕,释放 ,如果屏蔽下面的语句,则在控制台只能打印5条记录,之后线程一直阻塞
  19. } catch (InterruptedException e) {
  20. e.printStackTrace();
  21. }finally {
  22. System.err.println("。。。");
  23. }
  24. }
  25. };
  26. executorService.execute(runnable);
  27. }
  28. executorService.shutdown();
  29. }
  30. }
  31. 输出:
  32. systme:0
    systme:1
    systme:2
    。。。
    systme:3
    。。。
    systme:4
    。。。
    systme:5
    。。。
    systme:6
    。。。
    systme:7
    。。。
    systme:8
    。。。
    systme:9
    。。。
    systme:10
    。。。
    systme:11
    。。。
    systme:12
    。。。
    systme:13
    。。。
    systme:14
    。。。
    systme:15
    。。。
    systme:16
    。。。
    systme:17
    。。。
    systme:18
    。。。
    systme:19
    。。。
    systme:20
    。。。
    。。。
    。。。

24.Semaphore的更多相关文章

  1. AQS源码深入分析之共享模式-你知道为什么AQS中要有PROPAGATE这个状态吗?

    本文基于JDK-8u261源码分析 本篇文章为AQS系列文的第二篇,前文请看:[传送门] 第一篇:AQS源码深入分析之独占模式-ReentrantLock锁特性详解 1 Semaphore概览 共享模 ...

  2. CountDownLatch、CyclicBarrier和Semaphore

    转载:http://www.cnblogs.com/dolphin0520/p/3920397.html 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDown ...

  3. 线程间同步之 semaphore(信号量)

    原文地址:http://www.cnblogs.com/yuqilin/archive/2011/10/16/2214429.html semaphore 可用于进程间同步也可用于同一个进程间的线程同 ...

  4. Oracle Semaphore Management in UNIX Administration

    Oracle UNIX/Linux Tips by Burleson Consulting Semaphores and Oracle 11g 信号量和数据库 Semaphores are data ...

  5. 我的Python成长之路---第八天---Python基础(24)---2016年3月5日(晴)

    多线程编程 什么是多线程,线程是操作系统能够进行运算调度的最小单位.他包含在进程之中,是进程中的实际运作单位.线程是进程中一个单顺序的空值六,一个进程可以并发多个线程,每个线程可以并行处理不同的任务. ...

  6. 多线程工具类:CountDownLatch、CyclicBarrier、Semaphore、LockSupport

    ◆CountDownLatch◆ 假如有一个任务想要往下执行,但必须要等到其他的任务执行完毕后才可以.比如你想要买套房子,但是呢你现在手上没有钱.你得等这个月工资发了.然后年终奖发了.然后朋友借你得钱 ...

  7. Thread.join(), CountDownLatch、CyclicBarrier和 Semaphore区别,联系及应用

    在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法, 由于 ...

  8. 并发编程(七)——AbstractQueuedSynchronizer 之 CountDownLatch、CyclicBarrier、Semaphore 源码分析

    这篇,我们的关注点是 AQS 最后的部分,共享模式的使用.本文先用 CountDownLatch 将共享模式说清楚,然后顺着把其他 AQS 相关的类 CyclicBarrier.Semaphore 的 ...

  9. 信号量(Semaphore)

    在python的多线程体系中,一共有4种锁: 同步锁(互斥锁):Lock: 递归锁:RLock: 信号量:Semaphore: 同步条件锁:Condition. 信号量(semaphore)是一种可以 ...

随机推荐

  1. 更快的速度、更好的服务——易普优APS云排程

    众所周知软件执行效率受制于硬件性能,市面上的APS产品多为单机版本,企业要应用好APS,保证紧急插单.计划下发全程无忧,用户电脑硬件性能是不容忽视的一大瓶颈.APS的直接用户是车间管理人员.计划员,而 ...

  2. 【转】关于Jmeter3.0,你必须要知道的5点变化

    2016.5.18日,Apache 发布了jmeter 3.0版本,本人第一时间上去查看并下载使用了,然后群里或同事都会问有什么样变化呢?正好在网上看到一遍关于3.0的文章,但是是英文的.这里翻译一下 ...

  3. PHP的exec()函数无返回值排查方法[转]

    在安全imagemagic时 需要用到 exec很多服务器上安装失败 exec()执行外部命令失败,但没有任何错误信息. exec执行某命令在命令行下没有问题,但是在PHP中就出错.这个问题99.99 ...

  4. IOS和Android音频开发总结

    最近因为项目需要对声音进行变声,所以边学习边做,发现音频的处理思路并不难,但是做起来还是有些繁琐的(比预期的) 趁着脑子还发热,赶紧把思路总结一下,记录下来. 主要讲三个部分 1,如何变声2,安卓实现 ...

  5. 【基础知识】ASP.NET[基础一(ashx)]

    一.ASP.NET介绍 1.ASP.NET包括: 一般处理程序(ashx):WebForm ( aspx ):MVC(Model view con~~): 2.ASP.NET的常用文件(重点): 1& ...

  6. BZOJ 1212 [HNOI2004]L语言 【AC自动机 + 背包】

    题目链接[http://www.lydsy.com/JudgeOnline/problem.php?id=1212] 题意:给你一些单词,然后给出一个没有标点的文本串S,都是小写字符.现在让你求用给出 ...

  7. OI刷题记录(Updating)

    [Counter] [AGC]:0/96 [ARC]:0/70 [2016年省选]:0/69 [2017年省选]:22/75 [2018年省选]:0/63 [ZROI2018]:0/30 [ZROI2 ...

  8. Codeforces Round #FF (Div. 1) A. DZY Loves Sequences 动态规划

    A. DZY Loves Sequences 题目连接: http://www.codeforces.com/contest/446/problem/A Description DZY has a s ...

  9. Python知识(1)----基础入门和进阶总结。

    今天把Python的语法过了一遍,学习了慕课网上的教程,简单易懂,1个小时就可以入门Python了.Python有两个主要的版本,Python2.7,Python3.5,后面的版本,改动较大,编写的程 ...

  10. 指针式压力表自动读数:Auto Read the Value of Manometer

    指针式压力表的自动读数,用摄像头对准压力计,然后实时自动地读取压力计的读数.视频效果如下视频所示,红色数字为识别到的指针读数.