线程池的基本知识
2019-04-11 本文已影响0人
我是邱邱
线程池的四个组成部分:
1.线程池管理器:用于创建并管理线程池,包括 创建线程池,销毁线程池,添加新任务;
2.工作线程:线程池中线程,在没有任务时处于等待状态,可以循环的执行任务;
3.任务接口:每个任务必须实现的接口,以供工作线程调度任务的执行,它主要规定了任务的入口,任务执行完后的收尾工作,任务的执行状态等;
4.任务队列:用于存放没有处理的任务。提供一种缓冲机制。
线程池:java.util.concurrent包下面提供了一个Executors类,用于创建线程池,
线程池的种类:
1.ExecutorService newFixedThreadPool(int nThreads)
固定线程个数的线程池,每提交一个任务就是一个线程,达到固定个数时再过来的线程进入等待队列知道其他的线程任务执行完成才会继续执行
2.ExecutorService newSingleThreadExecutor()
单个线程的线程池,即线程池中每次只有一个线程工作,单线程串行执行任务
3.ExecutorService newCachedThreadPool()(强烈推荐)
可缓存线程池,当线程池大小超过了处理任务所需要的线程数,那么就会回收掉部分空闲的线程(一般是超过60秒未执行的线程),当有新的线程启动时,线程池中又回添加新的线程。该线程池的有点是可以对线程池自动收放
4.ScheduledExecutorService ScheduledThreadPoolExecutor(int corePoolSize)
线程数无限制,可以由我们自己决定,可以定时和周期性的执行线程
java提供的关于线程池的类与接口:
interface Executor接口:表示线程池接口,里面提供了执行现成的方法
void execute(Runnable command);
interface ExecutorService extends Executor:提供了一些管理线程池的一些方法,该接口的默认实现是ThreadPoolExecutor类
//关闭线程池
void shutdown();
boolean isShutdown();
class Executors:提供了一些静态方法,用于生成ExecutorService的一些实例方法