//当前电影票余量
private static int currentTickets = 30;//加锁确保多线程场景下的线程安全private static Lock lock = new ReentrantLock();public static void main(String[] args) {/*ThreadPoolExecutor 参数详解*   corePoolSize : 初始线程数量*   maximumPoolSize : 最大线程数量*   keepAliveTime : 定义线程闲置回收时间*   TimeUnit unit : 与定义回收时间绑定时间单位 时分秒*       TimeUnit.DAYS;              //天TimeUnit.HOURS;             //小时TimeUnit.MINUTES;           //分钟TimeUnit.SECONDS;           //秒TimeUnit.MILLISECONDS;      //毫秒TimeUnit.MICROSECONDS;      //微妙TimeUnit.NANOSECONDS;       //纳秒*  workQueue :*   new ArrayBlockingQueue:基于数组的先进先出队列,此队列创建时必须指定大小new LinkedBlockingQueue:基于链表的先进先出队列,如果创建时没有指定此队列大小,则默认为 Integer.MAX_VALUEnew SynchronousQueue:这个队列比较特殊,它不会保存提交的任务,而是将直接新建一个线程来执行新来的任务*** */ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(3,5,5,TimeUnit.MINUTES,new ArrayBlockingQueue<Runnable>(5));for (int i = 0; i <40 ; i++) {Future<Object> submit = threadPoolExecutor.submit(new Callable<Object>() {@Overridepublic Object call() throws Exception {return  saleTickets();    //调用方法体}});try {System.out.println(submit.get());}catch (Exception e){}finally {}}//关闭线程池threadPoolExecutor.shutdown();}public static String saleTickets(){lock.lock();try {if (currentTickets > 0 ){currentTickets--;return Thread.currentThread().getName()+"窗口出票成功!当前剩余:"+currentTickets;}else {return Thread.currentThread().getName()+"窗口出票失败!当前剩余:"+currentTickets;}}catch (Exception e){System.out.println(e);}finally {lock.unlock();}return "当前人数较多,请稍后重试";}

Java 线程池实际运用案例相关推荐

  1. Java程序员校招蚂蚁金服,java线程池实际项目案例

    一.背景 我们日常在电商网站购物时经常会遇到一些高并发的场景,例如电商 App 上经常出现的秒杀活动.限量优惠券抢购,还有我们去哪儿网的火车票抢票系统等,这些场景有一个共同特点就是访问量激增,虽然在系 ...

  2. java线程池案例_使用Executors 和 ThreadPoolExecutor实现Java线程池案例

    并发主题 使用Executors 和 ThreadPoolExecutor实现Java线程池案例 首先需要一个工作线程: package com.journaldev.threadpool; publ ...

  3. Java线程池源码解析及高质量代码案例

    引言 本文为Java高级编程中的一些知识总结,其中第一章对Jdk 1.7.0_25中的多线程架构中的线程池ThreadPoolExecutor源码进行架构原理介绍以及源码解析.第二章则分析了几个违反J ...

  4. Java线程池实现原理及其在美团业务中的实践

    来自:美团技术团队 随着计算机行业的飞速发展,摩尔定律逐渐失效,多核CPU成为主流.使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器.J.U.C提供的线程池ThreadPoolExecuto ...

  5. 【有料】Java线程池实现原理及其在美团业务中的实践

    随着计算机行业的飞速发展,摩尔定律逐渐失效,多核CPU成为主流.使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器.J.U.C提供的线程池:ThreadPoolExecutor类,帮助开发人员 ...

  6. java线程池详解及五种线程池方法详解

    基础知识 Executors创建线程池 Java中创建线程池很简单,只需要调用Executors中相应的便捷方法即可,比如Executors.newFixedThreadPool(int nThrea ...

  7. Java线程池实现原理及其在美团业务中的实践(转载加总结)

    我们知道线程有5种状态分别是新建,就绪,运行,阻塞,死亡,而对应的线程池也有5种状态RUNNING运行,线程池创建就是该状态,SHUTDOWN 不接受新任务,但是处理已存在的任务,STOP不接受新任务 ...

  8. java 线程池 使用实例

    1 线程池做什么 网络请求通常有两种形式: 第一种,请求不是很频繁,而且每次连接后会保持相当一段时间来读数据或者写数据,最后断开,如文件下载,网络流媒体等. 另一种形式是请求频繁,但是连接上以后读/写 ...

  9. 四种Java线程池用法解析

    四种Java线程池用法解析 本文为大家分析四种Java线程池用法,供大家参考,具体内容如下 http://www.jb51.net/article/81843.htm 1.new Thread的弊端 ...

  10. 面试必问---Java线程池8大拒绝策略

    前言 谈到java的线程池最熟悉的莫过于ExecutorService接口了,jdk1.5新增的java.util.concurrent包下的这个api,大大的简化了多线程代码的开发.而不论你用Fix ...

最新文章

  1. MFC系统托盘的实现
  2. 关于算法中的并查集,写的很有意思,转过来看看~
  3. DNS报文格式(RFC1035)
  4. 《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》——1.5 安装SMO
  5. C语言指针作为函数返回值
  6. 02_c3p0之c3p0-config.xml配置案例,操作c3p0的jdbcUtil工具类的编写
  7. JAVA面试题解惑系列(四)——final、finally和finalize的区别
  8. SAP Spartacus cx-split-view几个css属性值的逻辑依赖关系
  9. 漫游Kafka设计篇之Producer和Consumer(4)
  10. 2016 年:勒索病毒造成损失预估超过 10 亿美元
  11. 华为机试HJ27:查找兄弟单词
  12. TensorFlow安装中碰到的问题汇总
  13. 程序员的英语水平要达到什么程度才行?
  14. Node.js编写CLI的实践
  15. C++,Java,Pathy这几种编程语言的区别
  16. 【实验技术笔记】RNA 抽提 + 反转录PCR + PCR引物设计 + RT-qPCR
  17. 神经网络测试样本的选择,如何测试神经网络模型
  18. 基于PaddleX实现电梯电瓶车检测
  19. js获取时间、节假日、节气
  20. 开源问答系统开源软件

热门文章

  1. 判断数组中是否包含某一项 indexof 重复的判断不准_「JavaScript」: 老生常谈,数组类型...
  2. android 日历 定制,Android自定义View(CustomCalendar-定制日历控件)
  3. linux c socket 完全端口,浅谈 Linux C语言 socket 网络编程
  4. 大数据平台常用组件_京东大数据平台进化之路
  5. Substrings (C++ find函数应用)
  6. IIS、MySQL、Redis环境搭建
  7. python IDLE颜色设置
  8. Jmeter 接口自动化执行报错 无法找到类或者类的方法
  9. PRAE插件开发遇到的一个坑
  10. 在IDEA中编辑struts国际化properties文件