juc线程通信 线程池

📅 2026/7/12 14:35:38
juc线程通信 线程池
├── 六、线程池线程安全线程池本质上是为了解决“任务数量无限增长”和“系统资源有限”之间的矛盾。线程池通过固定数量线程 任务队列解决。任务提交|v---------------| 线程池 |---------------|线程1||线程2||线程3||任务队列A B C D E线程池主要解决三个矛盾第一大量任务请求和有限系统资源之间的矛盾通过限制线程数量保护系统第二频繁创建销毁线程和任务高频执行之间的矛盾通过线程复用降低开销第三任务突增和系统处理能力之间的矛盾通过任务队列和拒绝策略实现流量控制。技术池化资源解决问题线程池线程避免频繁创建线程连接池数据库连接避免频繁建立连接Redis连接池TCP连接提高复用效率对象池对象减少GC压力提前准备有限资源重复利用控制资源边界。│ ├── ThreadPoolExecutor 参数ThreadPoolExecutor 参数public ThreadPoolExecutor(int corePoolSize, ///核心线程数量int maximumPoolSize,///最大线程数量long keepAliveTime,//非核心存活时间TimeUnit unit,///时间单位BlockingQueueRunnable workQueue, //任务阻塞队列ThreadFactory threadFactory,/// 创建线程工厂RejectedExecutionHandler handler////拒绝策略)线程池执行流程重点executor.execute(task);提交任务|v当前线程数 corePoolSize?|------------------| |是 否| |创建核心线程 放入阻塞队列|v队列满了吗|----------------------| |否 是| |等待执行 当前线程 maximum?|----------------------| |是 否| |创建非核心线程 拒绝任务│ ├── 拒绝策略│ ├── execute 与 submit│ ├── Future│ ├── CompletableFuture│ ├── 线程池资源耗尽│ └── 为什么不推荐 Executor