直接上代码

package org.jimmy.threadtest20181121;import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;public class TestThread20181128 {public Semaphore semaphore = new Semaphore(2, true);public static void main(String[] args) {try {TestThread20181128 testThread20181128 = new TestThread20181128();LinkedBlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<Runnable>();ThreadPoolExecutor201811281311 executor = new ThreadPoolExecutor201811281311(2, 10000, 3600, TimeUnit.SECONDS, workQueue);for(int i = 0 ; i < 10; i++) {String id = i + "";Thread thread = new Thread(testThread20181128.new LineUpThread(id));executor.submit(thread);}executor.shutdown();} catch(Exception e) {e.printStackTrace();}}class LineUpThread implements Runnable {private String id;public LineUpThread(String id) {this.id = id;}@Overridepublic void run() {try {if(semaphore.availablePermits() > 0){System.out.println("开始排队");}semaphore.acquire();System.out.println("轮到编号" + id + "的客户了,可以开始购票了!");System.out.println("编号" + id + "的客户已购票成功!");semaphore.release();} catch(Exception e) {e.printStackTrace();}}}}

运行结果:

转载于:https://www.cnblogs.com/JimmySeraph/p/10031776.html

java线程池,信号量使用demo相关推荐

  1. JAVA线程池原理以及几种线程池类型介绍

    在什么情况下使用线程池? 1.单个任务处理的时间比较短      2.将需处理的任务的数量大 使用线程池的好处: 1.减少在创建和销毁线程上所花的时间以及系统资源的开销      2.如不使用线程池, ...

  2. Java 线程池艺术探索

    线程池 Wiki 上是这样解释的:Thread Pool 作用:利用线程池可以大大减少在创建和销毁线程上所花的时间以及系统资源的开销! 下面主要讲下线程池中最重要的一个类 ThreadPoolExec ...

  3. Java 线程池的原理与实现

    最近在学习线程池.内存控制等关于提高程序运行性能方面的编程技术,在网上看到有一哥们写得不错,故和大家一起分享. [分享]Java 线程池的原理与实现 这几天主要是狂看源程序,在弥补了一些以前知识空白的 ...

  4. java线程池并发_Java并发教程–线程池

    java线程池并发 Java 1.5中提供的最通用的并发增强功能之一是引入了可自定义的线程池. 这些线程池使您可以对诸如线程数,线程重用,调度和线程构造之类的东西进行大量控制. 让我们回顾一下. 首先 ...

  5. springboot tomcat默认线程数_记一次JAVA线程池的错误用法

    最近项目一个项目要结项了,但客户要求 TPS 能达到上千,而用我写的代码再怎么弄成只能达到 30 + 的 TPS,然后我又将代码中能缓存的都缓存了,能拆分的也都拆分了,拆分时用的线程池来实现的:其实现 ...

  6. 好文推荐:深入分析Java线程池的实现原理

    线程是稀缺资源,如果被无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,合理的使用线程池对线程进行统一分配.调优和监控,有以下好处: 1.降低资源消耗: 2.提高响应速度: 3.提高线程的可管理 ...

  7. Java 线程池及参数动态调节详解

    前前言:本文搬自:why技术 前言:曾经自诩对线程池了如指掌,不料看了美团的一篇技术文章后才知道原来线程池的参数还可以动态调节. 经典面试题 在这篇文章中我主要回答上面抛出的这个问题:你这几个参数的值 ...

  8. java获取队列长度_关注Java线程池的任务队列长度

    关注Java线程池的任务队列长度 Java 5.0 就开始自带线程池的实现,其中固定大小的线程池,对普通使用还是很好用的.就是 Executors.newFixedThreadPool ,指需要指定一 ...

  9. java 解析m3u8的实例_使用java线程池批量下载m3u8。合并mp4.

    使用java线程池批量下载m3u8合并mp4. 看了线程池的demo,然后就想下载文件试试. 代码未必规范,多多建议. 大家可以自行修改,满足自己的需求. 还需要深入学习一下线程池. 给俺个星星⭐,可 ...

最新文章

  1. 清华学霸直博简历火了!CPU、操作系统、编译器全自主写,刘知远点赞
  2. numpy向量转换为矩阵_干掉公式——numpy 就该这么学
  3. JAVA中float和double的区别、String和char的区别
  4. 如何在页面上实现一个圆形的可点击区域?
  5. 测试环境搭建流程_案例解析:一个完整的项目测试方案流程,应该是怎么的?...
  6. 并发基础(十) 线程局部副本ThreadLocal之正解
  7. mysql建立 分区_MySQL-mysql分区合理建立
  8. 【Codeforces - 864D】Make a Permutation!(贪心,字典序)
  9. Java23中设计模式(Design Patterns)详解
  10. DeepMind深度学习高级课程,视频已全部放出
  11. [导入]表单确认按钮——Javascript函数
  12. 计算机视觉专业名词中英文对照(转)
  13. oracle 启动报错03113,Oracle 入门之Oracle启动报错“ORA-03113”
  14. 微软笔试题三道(略微偏向竞赛题)
  15. blos硬盘启动台式计算机,教你联想 (Lenovo)台式机bios修改硬盘启动技巧
  16. JAVA---集合子接口之Set
  17. 算法设计和分析 ② 分治和递归
  18. IKEv2的密钥计算方式
  19. ASP.NET 5 Target framework dnx451 and dnxcore50
  20. 数据挖掘 顶级期刊_数据挖掘顶级期刊简介_47209.doc

热门文章

  1. 各种分页存储过程 (转)
  2. [转载]使用Vitamio打造自己的Android万能播放器(7)——在线播放(下载视频)...
  3. javascript设计模式简单介绍之【工厂模式】
  4. SmartTemplate学习入门一
  5. Java并发编程(多线程)中的相关概念
  6. [转]windows系统激活
  7. 当Terraform遇上ECS(一)——DataSource篇
  8. 电脑上面玩Android 游戏(.apk文件)
  9. 真格量化——中性策略交易期权
  10. 一个待办事列表todolist