当前位置: 首页 > news >正文

JAVA线程池的使用

一、池化思想和JAVA线程池

池化是很重要的思想;池化的好处是提供缓冲和统一的管理。这个笔者在本人的数据库连接池的博客中已经提到过了(JAVA常用数据库连接池_王者之路001的博客-CSDN博客

)。

线程池是另一种池化思想的运用,把线程放入池中进行管理。这种方法的好处是可以避免线程的创建、切换和销毁,因为这些过程非常耗资源。

JAVA线程池就是这样的一种线程池。

二、JAVA线程池基本原理

JAVA线程池的基本原理,其实就是对线程的生产者-消费者模型。线程池对产生的任务进行序贯执行。

JAVA线程池主要做的事情是对线程池的管理和任务的执行。

 如上图所示,右半部分是线程池的管理,而左半部分是任务的执行。

任务执行通过阻塞队列来完成。

线程池执行任务如下图所示:

JAVA线程池会确定核心线程数和最大线程数,来控制线程池的大小。

三、JAVA线程池的使用

JAVA线程池主要有newCachedThreadPool、newFixedThreadPool、newSingleThreadExecutor和newScheduledThreadPool。

一般通过父类ExecutorService声明使用。代码样例如下:

public class FixedThreadPool {public static void main(String[] args) {ExecutorService executorService = Executors.newFixedThreadPool(10);for (int i = 0; i < 200; i++) {executorService.execute(new Task());}executorService.shutdown();}
}

其中,Task为相关线程。也可以采用匿名函数等方式运行。

四、避免的问题

一般情况下,大厂都不建议工程师自己创建线程池,因为线程池创建很容易消耗大量内存。大厂一般有自己的线程池创建模型。

参考文献

[1]Java线程池实现原理及其在美团业务中的实践 - 美团技术团队

[2]面试必问:Java 线程池 | Java程序员进阶之路

[3]JUC线程池: ThreadPoolExecutor详解 | Java 全栈知识体系

[4]https://www.cnblogs.com/vipstone/p/14149065.html

[5]彻底搞懂Java线程池的工作原理-51CTO.COM

[6]https://www.cnblogs.com/pcheng/p/13540619.html

http://www.lryc.cn/news/10496.html

相关文章:

  • 力扣56.合并区间
  • 代码随想录二刷Day03链表: 24.两两交换链表中的节点,19.删除链表的倒数第N个节点,面试题 02.07. 链表相交,142.环形链表||
  • 我应该在我的博客上写什么? 介绍如何撰写初学者容易担心的文章
  • 嵌入式C语言设计模式 --- 外观模式
  • 若依ruoyi——手把手教你制作自己的管理系统【三、代码生成】
  • SCI论文写作神器集合 —— 超级实用
  • MAC 系统安装多版本 JDK 并任意切换
  • 配置 Smart Link 接口时需注意的互斥命令
  • QT的下载和安装
  • nacos配置中心与服务注册中心
  • UE4 手把手教你做插件(1) 从代码引用插件
  • 【Mybatis源码解析】一级缓存和二级缓存源码解析
  • 你知道MES实施的要点吗?
  • 告诉你为什么为什么 SELECT COUNT(*) FROM table 在 InnoDB 引擎中比 MyISAM引擎中的速度慢
  • Redis 命令和Redis key键
  • 如何入侵服务器
  • 在Windows10上安装虚拟机---VMware 17 Pro下载与安装
  • 生命周期函数、组件
  • 蓝桥杯 stm32 PWM 测量频率
  • Docker CPU 资源控制
  • 小红书数据平台:笔记爆文率提升的三大秘诀公式!
  • Spring MVC 之Tomcat启动流程
  • 大疆车载更新产品矩阵,覆盖从主动安全到城区领航的全场景
  • 总结Anisble中的任务执行控制并练习
  • PMP好考吗,有多大的价值?
  • http常用状态码(204,304, 404, 504,502)含义
  • 记录锁,间隙锁,插入意向锁,临键锁兼容关系
  • map相关接口(map接口、HashMap、LinkedHashMap、TreeMap)
  • 抽象工厂模式(Abstract Factory Pattern)
  • Linux驱动学习笔记