线程池的构造方法中常见参数简介

  • corepoolsize:核心线程数,即便这里的线程处于空闲状态,也不会被回收,会一直存在线程池中
  • maxmumpoolsize:线程池所能容纳的最大线程数,超过这个数的线程将被阻塞。
  • keepaliveTime:非核心线程的最长空闲时间。一般这个值不会对corepoolsize有影响,但是如果将allowcorethreadtimeout设置为true,这个值就会对核心线程有影响。
  • unit:设置keepaliveTime的单位,比如秒
  • workqueue:线程池的任务队列,常见的队列会有三种:synchronousQueue,linkedBlockingQueue,ArrayBlockingQueue
  • threadFactory:线程工厂,提供创建新线程的功能,其是一个接口里面只有一个方法,通过线程工厂可以对性和线程的一些属性就行设定。
  • RejectedExecutionHandler:当线程池中的所有资源被用完了,添加新线程被拒绝时,回调用RejectedExecutionHandler中rejectedExecution方法
  • 下面都假设任务队列没有大小限制:

    1. 如果线程数量<=核心线程数量,那么直接启动一个核心线程来执行任务,不会放入队列中。
    2. 如果线程数量>核心线程数,但<=最大线程数,并且任务队列是LinkedBlockingDeque的时候,超过核心线程数量的任务会放在任务队列中排队。
    3. 如果线程数量>核心线程数,但<=最大线程数,并且任务队列是SynchronousQueue的时候,线程池会创建新线程执行任务,这些任务也不会被放在任务队列中。这些线程属于非核心线程,在任务完成后,闲置时间达到了超时时间就会被清除。
    4. 如果线程数量>核心线程数,并且>最大线程数,当任务队列是LinkedBlockingDeque,会将超过核心线程的任务放在任务队列中排队。也就是当任务队列是LinkedBlockingDeque并且没有大小限制时,线程池的最大线程数设置是无效的,他的线程数最多不会超过核心线程数。
    5. 如果线程数量>核心线程数,并且>最大线程数,当任务队列是SynchronousQueue的时候,会因为线程池拒绝添加任务而抛出异常。
  • 任务队列大小有限时

    1. 当LinkedBlockingDeque塞满时,新增的任务会直接创建新线程来执行,当创建的线程数量超过最大线程数量时会抛异常。
    2. SynchronousQueue没有数量限制。因为他根本不保持这些任务,而是直接交给线程池去执行。当任务数量超过最大线程数时会直接抛异常。

最新文章

  1. codevs 1772 歌词
  2. MySQL Index详解
  3. UVa 11995:I Can Guess the Data Structure!(数据结构练习)
  4. js传值
  5. zw版【转发&#183;台湾nvp系列Delphi例程】HALCON SmoothImage
  6. 学习了初级的Python
  7. Codeforces Gym 100342H Problem H. Hard Test 构造题,卡迪杰斯特拉
  8. like的性能问题
  9. Why Doesn’t Drag-and-Drop work when my Application is Running Elevated? – A: Mandatory Integrity Control and UIPI(转载)
  10. 模板--&gt;求逆矩阵(利用初等变换求解)
  11. Mutex — Windows API
  12. 【LeetCode练习题】Reverse Words in a String
  13. 用C语言写一个程序,得出当前系统的整形数字长(16位,32位,64位)等,不能使用sizeof()
  14. 【转】C++类-内存分布
  15. 解决类似umount target is busy挂载盘卸载不掉问题
  16. arcgis for js symbol图标的变化
  17. C# Note30: 网络爬虫
  18. eval &amp; sleep
  19. js el jstl list 循环
  20. ASP.NET MVC中的cshtml页面中的下拉框的使用

热门文章

  1. AOP如何在业务结束时,根据参入参数和返回结果添加日志
  2. ODbgScript 2.01帮助文档
  3. 转载:安装Ubuntu 15.10后要做的事
  4. 【转】xhEditor技术手册 网页编辑器基础教程
  5. centos下安装Loadrunner
  6. PISQLDAS 查询语句
  7. jsoup访问页面: PKIX path building failed
  8. SSL、数字签名、CA 工作原理通俗描述
  9. 关于思科C2950交换机清除密码,恢复初始配置的方法
  10. ssh登录慢解决办法