线程池

2021-02-1611

Executor à执行线程的工具

ExecutorServiceà线程池的接口

 

ExecutorService threadPool = Executors.newFixedThreadPool(10);

创建可用状态固定数量的线程,以共享无界队列的方式运行这些线程

(常见无界队列:

ConcurrentLinkedQueue

ProrityBlockingQueue

DelayedQueue

在有可用线程之前,附加任务将在队列中等待

由于失败而导致任何线程终止,那么一个新线程将代替它执行后续的任务(如果需要的话)

如果线程不被显式的关闭,线程将一直存在于线程池当中

 

newCachedThreadPool带缓存的线程池

--根据需要创建线程的线程池,对于以前构造的线程可用时可以重用他们

--对于短期的异步tast而言这种线程池是优势

调用execute将重用构造好的(处于可用状态的--runnable的线程)

如果没有线程可用(处于runnable状态),创建一个新的线程并添加到线程池当中

从缓存中清除超过60秒未被使用的线程

长时间空闲的线程不会使用任何资源

 

 

newScheduledThreadPool计划线程池

创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行

重写pool中的schedule方法可以在延迟时间之后运行命令

重写pool中的scheduleAtFixedRate方法可以以固定速率运行命令

 

newSingleThreadPool单线程线程池

这个线程池只有一个线程, 这个线程池可以在线程死后(或发生异常时)重新启动一个线程来替代原来的线程继续执行下去!

 

newSingleScheduledThreadPool 单线程线计划程池

newSingleThreadPool newScheduledThreadPool 的结合


上一篇:线程生命周期(状态) 下一篇:Java线程