Java线程池的原理

本文详细解析了线程池的工作原理,包括线程复用、控制最大并发数及线程管理。介绍了线程池的组成部分,如线程池管理器、工作线程、任务接口及任务队列。同时,深入探讨了Java中线程池的实现框架,以及线程池的常见配置参数,如核心线程数、最大线程数、空闲线程存活时间等。
摘要由CSDN通过智能技术生成

一、线程池的特点

线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。他的主要特点为:线程复用;控制最大并发数;管理线程。

二、线程池的原理

每一个 Thread 的类都有一个 start 方法。 当调用 start 启动线程时 Java 虚拟机会调用该类的 run 方法。 那么该类的 run() 方法中就是调用了 Runnable 对象的 run() 方法。 我们可以继承重写Thread 类,在其 start 方法中添加不断循环调用传递过来的 Runnable 对象。 这就是线程池的实现原理。循环方法中不断获取 Runnable 是用 Queue 实现的,在获取下一个 Runnable 之前可以是阻塞的。

三、线程池的组成

  1. 线程池管理器:用于创建并管理线程池;

  2. 工作线程:线程池中的线程;

  3. 任务接口:每个任务必须实现的接口,用于工作线程调度其运行;

  4. 任务队列:用于存放待处理的任务,提供一种缓冲机制。

四、Java中的线程池

Java 中的线程池是通过 Executor 框架实现的,该框架中用到了 Executor,Executors,ExecutorService,ThreadPoolExecutor ,Callable 和 Future、FutureTask 这几个类。

五、线程池的常用配置

  1. corePoolSize:指定了线程池中的线程数量。

  2. maximumPoolSize:指定了线程池中的最大线程数量。

  3. keepAliveTime:当前线程池数量超过 corePoolSize 时,多余的空闲线程的存活时间,即多次时间内会被销毁。

  4. unit:keepAliveTime 的单位。

  5. workQueue:任务队列,被提交但尚未被执行的任务。

  6. threadFactory:线程工厂,用于创建线程,一般用默认的即可。

  7. handler:拒绝策略,当任务太多来不及处理,如何拒绝任务。

(芬香邀请码:BXDC88)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值