【Java 多线程并发】线程池原理

线程池做的工作主要是控制与逆行的线程数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量,超出数量的线程排队等待,等其他线程执行完毕,再从队列中取出任务来执行。

他的主要特点为:线程复用;控制最大并发数;管理线程

1.线程复用

每一个 Thread 的类都有一个 start 方法。

当调用 start 启动线程时 Java 虚拟机会调用该类的 run 方法。那么该类的 run() 方法中就是调用了 Runnable 对象的 run() 方法。

我们可以继承重写 Thread 类,在其 start 方法中不断循环调用传递过来的 Runnable 对象,这就是线程池的实现原理。

循环方法中不断获取 Runnable 是用 Queue 实现的,在获取下一个 Runnable 之前可以是阻塞的。

2.线程池的组成

 一般的线程池主要分为以下 4 个组成部分:

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

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

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

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章