类似于Web服务器这种多任务情况时,不可能只用一个线程来对外提供服务。这样效率和吞吐量都太低。

但是也不能来一个请求就创建一个线程,因为创建线程的成本很高,系统能创建的线程数量是有限的。

于是Executor就出现 了。

Executor框架

线程池的意义

线程创建太少了浪费服务器资源,另外线程创建多了又搞得服务器很累。两个极端的结果都是对外的吞吐量上不去。

所以线程是需要统一管理的,不能随便new Thread().start()。

Executor提供了四种线程池。

ExecutorService管理功能

包括:关闭和强制关闭、是否关闭、是否中断、等待中断、提交任务、批量提交任务。

找出可利用的并行性

多个任务如果可以并行那最好就让它并行:

通常,执行时间相差很大的异构任务的并行没有意义,执行时间受限于执行时间最长的那个任务:

这种情况,要考虑的是把taskA给分解了。

ExecutorCompletionService可以批量提交任务并获取执行结果;

转载于:https://www.cnblogs.com/at0x7c00/p/8134663.html

Java并发编程实践读书笔记(3)任务执行相关推荐

  1. java并发编程实践 读书笔记_Java - 并发编程实践(读书笔记)

    [注] 同步机制保证:1)原子性 2)内存可见性: Volatile变量只能保证:1)可见性: - 恰当的同步,同步的弱形式,确保对一个变量的更新以可预见的方式告知其他线程. [注] 用锁来协调访问变 ...

  2. Java 并发编程实践 读书笔记四

    组合对象 设计线程安全的类 设计线程安全类的过程应该包括下面3个基本要素: 确定对象状态是由哪些变量构成的 确定限制状态变量的不变约束 制定一个管理并发访问对象状态的策略 对象状态从域讲,如果对象域都 ...

  3. Java并发编程实战读书笔记

    Java并发编程 标签(空格分隔): 并发 多线程 基础 线程 在执行过程中,能够执行程序代码的一个执行单元,在Java语言中,线程有四种状态:运行,就绪,挂起,结束. 并发特性 原子性 一个操作不会 ...

  4. Java并发编程艺术----读书笔记(二)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/a724888/article/details/64214595  java并发编程艺术2 jav ...

  5. Java 并发编程艺术 读书笔记

    第 1 章 并发编程的挑战 1.1.3 如何减少上下文切换 减少上下文切换的方法有无锁并发编程.CAS 算法.使用最少线程和使用协程. 无锁并发编程.多线程竞争锁时,会引起上下文切换,所以多线程处理数 ...

  6. JAVA并发编程艺术读书笔记(1,2章节)

    第一章 并发编程的挑战 为什么要使用并发编程? 主要是为了更有效地利用资源.即使是单核的CPU也可以多线程执行程序,多线程实际上是CPU分配时间片给各个线程,因为时间片非常短,所以看起来就像在同事执行 ...

  7. Java并发编程艺术读书笔记

    1.多线程在CPU切换过程中,由于需要保存线程之前状态和加载新线程状态,成为上下文切换,上下文切换会造成消耗系统内存.所以,可合理控制线程数量. 如何控制: (1)使用ps -ef|grep appn ...

  8. Java并发编程实战读书笔记三

    第七章 取消和关闭 Java没有提供任何机制来安全的终止线程,虽然 Thread.stop 和 suspend 等方法提供了这样的机制,但由于存在着一些严重的陷,因此应该避免使用 7.1任务取消 7. ...

  9. Java并发编程实战读书笔记(一)——线程安全性、对象共享

    一.线程安全性 一个对象是否需要是线程安全的,取决于它是否被多个线程访问. 当多个线程访问,并且其中有一个执行写入时,必须采用同步机制,Java中主要的同步关键字是 synchronized 独占加锁 ...

最新文章

  1. 两篇很牛的vim使用技巧
  2. external libraries里没有maven包_Maven企业实战系列(三):彻底看懂maven的体系结构...
  3. TabLayout 与 FragmentTabHost
  4. 南阳理工计算机全国排名,全国工科实力最强的10所高校排名,
  5. 关于JXL读写以及修改EXCEL文件转
  6. 深度遍历和广度遍历(图解)
  7. android常用单词,Android的英语单词记忆软件系统
  8. 扫描线zbuffer消隐算法
  9. python调用pyd失效
  10. 不逼自己下不知道潜力可以有多大
  11. 全球主要语言缩写对照
  12. Windows 10驱动签名_win 10驱动数字签名_驱动签名注意事项
  13. python3中的urllib.parse的常用方法
  14. CentOS8 解决SSH Secure Shell 报错 Algorithm negotiation failes
  15. 微信小程序----map组件实现检索【定位位置】周边的POI
  16. 【ERP】实践3_会计科目_凭证_期初余额
  17. (三)java数据库篇笔记库(34)
  18. 力扣动态规划入门21天刷题计划(共计46题)
  19. iOS 解决时间相差8小时问题
  20. 谷歌浏览器安装插件cross requst(本地安装)

热门文章

  1. Android 的 SDK Manager 无法启动 闪退解决方法
  2. 写一个简单的爬虫 - 如何模拟登录网站
  3. PHP学习之路(一)工欲善其事,必先利其器(Zend配置)
  4. 微软人工智能平台开源:利用《我的世界》测试AI软件
  5. 不仅能搜索还能查信息 带你了解LBS应用
  6. Magento多图导入
  7. laravel 5.5 整合 jwt 报错Method Tymon\JWTAuth\Commands\JWTGenerateCommand::handle() does not exist解决...
  8. hdu 1016 Prime Ring Problem(DFS)
  9. javascript中闭包的一些理解
  10. Guava包学习---Maps