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

建设网站网站设计搜盘 资源网

建设网站网站设计,搜盘 资源网,wordpress主题转typecho,美食网站建设背景适合人群:Java中级开发者 | 并发编程入门者 | 系统调优实践者 目录 一、引言:为什么线程池是Java并发的核心? 二、线程池核心知识点详解 1. 线程池核心参数与原理 2. 线程池的创建与使用 (1) 基础用法示例 (2) 内置线程池的隐患 3. 线…

适合人群:Java中级开发者 | 并发编程入门者 | 系统调优实践者

目录

一、引言:为什么线程池是Java并发的核心?

二、线程池核心知识点详解

1. 线程池核心参数与原理

2. 线程池的创建与使用

(1) 基础用法示例

(2) 内置线程池的隐患

3. 线程池调优与注意事项

(1) 参数配置原则

(2) 监控线程池状态

(3) 合理选择拒绝策略

三、进一步学习方向


一、引言:为什么线程池是Java并发的核心?

在高并发场景下,频繁创建和销毁线程会带来巨大开销(如内存抖动、GC压力)。线程池通过复用线程资源管控解决了以下问题:

  • 降低资源消耗:避免线程频繁创建/销毁的开销

  • 提升响应速度:任务到达时直接复用空闲线程

  • 增强可控性:统一管理线程数量、任务队列、拒绝策略

二、线程池核心知识点详解

1. 线程池核心参数与原理

Java线程池通过ThreadPoolExecutor实现,其构造函数包含7个关键参数

public ThreadPoolExecutor(  int corePoolSize,      // 核心线程数(长期保留的线程)  int maximumPoolSize,   // 最大线程数(临时线程=最大-核心)  long keepAliveTime,    // 临时线程空闲存活时间  TimeUnit unit,         // 存活时间单位(秒/毫秒等)  BlockingQueue<Runnable> workQueue, // 任务队列  ThreadFactory threadFactory,       // 线程创建工厂  RejectedExecutionHandler handler   // 拒绝策略  
)  

线程池工作流程

  1. 提交任务时,优先使用核心线程执行

  2. 核心线程满后,任务进入阻塞队列

  3. 队列满后,创建临时线程(不超过maximumPoolSize

  4. 线程和队列均满时,触发拒绝策略

2. 线程池的创建与使用
(1) 基础用法示例
import java.util.concurrent.*;  public class ThreadPoolDemo {  public static void main(String[] args) {  // 创建线程池  ThreadPoolExecutor executor = new ThreadPoolExecutor(  2,                             // corePoolSize  4,                             // maximumPoolSize  30,                            // keepAliveTime  TimeUnit.SECONDS,              // 时间单位  new ArrayBlockingQueue<>(10),  // 任务队列容量10  Executors.defaultThreadFactory(), // 默认线程工厂  new ThreadPoolExecutor.AbortPolicy() // 拒绝策略:直接抛出异常  );  // 提交10个任务  for (int i = 0; i < 10; i++) {  final int taskId = i;  executor.execute(() -> {  try {  System.out.println(  "线程" + Thread.currentThread().getName() +   "执行任务" + taskId  );  Thread.sleep(1000); // 模拟任务耗时  } catch (InterruptedException e) {  e.printStackTrace();  }  });  }  // 关闭线程池(非阻塞,等待所有任务完成)  executor.shutdown();   }  
}  

输出分析

  • 核心线程2个,处理前2个任务

  • 后续任务进入队列,队列容量10,最终4个线程处理10个任务

(2) 内置线程池的隐患

Executors工具类提供了快速创建线程池的方法,但存在风险

// 可能导致OOM(队列无界)  
ExecutorService cachedPool = Executors.newCachedThreadPool();  
ExecutorService fixedPool = Executors.newFixedThreadPool(10);  // 推荐手动创建线程池,明确参数!  
3. 线程池调优与注意事项
(1) 参数配置原则
  • CPU密集型任务

    • corePoolSize = CPU核心数 + 1

    • 队列选择有界队列(如ArrayBlockingQueue

  • IO密集型任务

    • corePoolSize = 2 * CPU核心数

    • 队列容量适当增大

(2) 监控线程池状态
// 定期打印线程池状态  
ScheduledExecutorService monitor = Executors.newScheduledThreadPool(1);  
monitor.scheduleAtFixedRate(() -> {  System.out.println("活跃线程数:" + executor.getActiveCount());  System.out.println("队列任务数:" + executor.getQueue().size());  
}, 0, 1, TimeUnit.SECONDS);  
(3) 合理选择拒绝策略
策略类行为
AbortPolicy(默认)抛出RejectedExecutionException
CallerRunsPolicy由提交任务的线程直接执行
DiscardOldestPolicy丢弃队列中最旧的任务并重试
DiscardPolicy静默丢弃新任务

三、进一步学习方向

  1. 并发工具类

    • CountDownLatch:多线程任务同步

    • CompletableFuture:异步编程模型

  2. 性能优化

    • 使用ThreadLocal避免线程间数据竞争

    • 分析线程转储(Thread Dump)排查死锁

  3. 框架集成

    • Spring的@Async注解实现异步任务

    • 分布式线程池(如Dubbo的线程模型)


文章转载自:

http://JlCCNGB0.Lkrmp.cn
http://dPQNGJv5.Lkrmp.cn
http://K0618L1M.Lkrmp.cn
http://xqfGjrtA.Lkrmp.cn
http://aRs69eqS.Lkrmp.cn
http://9plHTXNc.Lkrmp.cn
http://VcnT3ZRT.Lkrmp.cn
http://vb1fA57C.Lkrmp.cn
http://CMV7DAkk.Lkrmp.cn
http://U2GxHgMa.Lkrmp.cn
http://JTcGqnFv.Lkrmp.cn
http://FvtlrQRg.Lkrmp.cn
http://b57VPDXq.Lkrmp.cn
http://O4hyePd2.Lkrmp.cn
http://R7Q32BFC.Lkrmp.cn
http://TwN0ZLpM.Lkrmp.cn
http://VCibNsxM.Lkrmp.cn
http://zjcZZJeF.Lkrmp.cn
http://ioBQ3qSl.Lkrmp.cn
http://fudYJFuL.Lkrmp.cn
http://an3xGSqJ.Lkrmp.cn
http://TGR6Spnd.Lkrmp.cn
http://g7dIV7ON.Lkrmp.cn
http://JG0Ksiuv.Lkrmp.cn
http://ga1MGLsV.Lkrmp.cn
http://xsQaSKQ7.Lkrmp.cn
http://s9wPf027.Lkrmp.cn
http://mWd1AM0W.Lkrmp.cn
http://bFPihhB7.Lkrmp.cn
http://ebSsfuxf.Lkrmp.cn
http://www.dtcms.com/wzjs/616174.html

相关文章:

  • 个人能做网站吗无法访问iis网站
  • 网站建设微商城多少钱深圳做微信网站制作
  • 济南营销型网站建设工作室学习网站开发教程
  • 网站举报多久有结果重庆开县网站建设公司
  • 做网站加入视频无法播放网站建设氺首选金手指12
  • 毕业设计2网站建设什么是c2c模式
  • 网站管理员后台国内软件开发
  • 关于建网站做淘宝联盟网站落地页怎么做
  • php网站页面转wordpress免费开源cms网站源码
  • 怎么查网站有没有做301动态电子商务网站建设报告
  • 成品网站源码下载赣州网络公司
  • 信息作业网站下载培训网站推荐
  • 怎么建立自己的网站?王烨演的电视剧
  • 安全网站建设网站制作wordpress外贸主题用哪个好
  • 中国建设官方网站企业滁州做网站
  • 做行程的网站推荐做婚礼请柬的网站有哪些
  • 济南新站seo外包家具网站源码
  • 山东省双体系建设网站怎么做网站竞价
  • 网站建设标题怎么写网站seo规范
  • 厚街网站仿做org是国外的网站吗
  • 查询网站备案进度个人博客网站怎么做
  • 招远网站建设联系电话asp网站建设运用的技术
  • 菜鸟必读 网站被入侵后需做的检测 2j2ee网站开发
  • 网站运行速度慢网站开发课程设计报告
  • 厦门网站建设公司怎么选不用购买域名做网站
  • 如何进行网站分析如何做一个导航网站
  • 哪几个小说网站做网编拿的钱多郑州经济技术开发区官网
  • 怎么建设域名和网站国内公司网站需要备案吗
  • 浙江国泰建设集团有限公司网站标题关键词优化报价
  • 怀化网站建设怎么收费网站制作眼