您的位置:首页>>资讯中心>>学习园地

Java线程池(一)

  一、Java的线程池

  Java的线程池是运用场景最多的并发框架,几乎所有需要异步或者并发执行任务的程序都可以使用线程池。

  1. 合理使用线程池能带来的好处:

  1) 降低资源消耗。通过重复利用已经创建的线程降低线程创建的和销毁造成的消耗。

  2) 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。

  提高线程的可管理性。线程是稀缺资源,Java的线程池可以对线程资源进行统一分配、调优和监控。

  2. 线程池的工作流程

  一个新的任务到线程池时,线程池的处理流程如下:

  1) 线程池判断核心线程池里的线程是否都在执行任务。如果不是,创建一个新的工作线程来执行任务。如果核心线程池里的线程都在执行任务,则进入下个流程。

  2) 线程池判断阻塞队列是否已满。如果阻塞队列没有满,则将新提交的任务存储在阻塞队列中。如果阻塞队列已满,则进入下个流程。

  3) 线程池判断线程池里的线程是否都处于工作状态。如果没有,则创建一个新的工作线程来执行任务。如果已满,则交给饱和策略来处理这个任务。

  3. 线程池的核心实现类是ThreadPoolExecutor类,用来执行提交的任务。因此,任务提交到线程池时,具体的处理流程是由ThreadPoolExecutor类的execute()方法去完成的。

  二、工作线程(Worker)

  线程池在创建线程时,会将线程封装成工作线程Woker。Woker在执行完任务后,不是立即销毁而是循环获取阻塞队列里的任务来执行。


上一篇: 聚集索引和非聚集索引区别?

下一篇: 职生选择之第二个决定性因素:钱途