Executors

作者: thinking2019 | 来源:发表于2020-07-06 08:07 被阅读0次

Java通过Executors提供四种线程池

newCachedThreadPool

创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。

ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
cachedThreadPool.execute(new Runnable() {});
newFixedThreadPool

创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。

ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3);
fixedThreadPool.execute(new Runnable() {});
newScheduledThreadPool

创建一个定长线程池,支持定时及周期性任务执行。

ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);
// 延迟3秒执行
scheduledThreadPool.schedule(new Runnable() {}, 3,  TimeUnit.SECONDS);
// 延迟1秒后每3秒执行一次。
scheduledThreadPool.scheduleAtFixedRate(new Runnable() {}, 1, 3, TimeUnit.SECONDS);
newSingleThreadExecutor

创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。

ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
singleThreadExecutor.execute(new Runnable() {});
自定义线程池
// 创建等待队列   
BlockingQueue<Runnable> bqueue = new ArrayBlockingQueue<Runnable>(20);   
 // 创建线程池,池中保存的线程数为3,允许的最大线程数为5  
ThreadPoolExecutor pool = new ThreadPoolExecutor(3,5,50,TimeUnit.MILLISECONDS,bqueue);
// 添加线程
pool.execute(new Runnable() {});
// 关闭线程池   
pool.shutdown(); 

public ThreadPoolExecutor (int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit,BlockingQueue<Runnable> workQueue);

corePoolSize:线程池中所保存的核心线程数,包括空闲线程。
maximumPoolSize:池中允许的最大线程数。
keepAliveTime:线程池中的空闲线程所能持续的最长时间。
unit:持续时间的单位。
workQueue:任务执行前保存任务的队列,仅保存由execute方法提交的Runnable任务。

相关文章

  • Java Consurrency 《Thread Pool Ex

    Java Consurrency 《Thread Pool Executors》 Executors 为 Exec...

  • Executors

    Executors生成常用的几种线程池执行者 可缓存线程池 定长的线程池 定时线程池 ScheduledThrea...

  • Executors

    自定义线程池: public class MyThreadPoolDemo {/**第一个线程就用核心线程数去执行...

  • Executors

    Java通过Executors提供四种线程池 newCachedThreadPool 创建一个可缓存线程池,如果线...

  • Executors

    是一个工厂方法,提供Executor。创建并提供ExecutorService、ScheduledExecutor...

  • Executors 的问题

    7. Executors 的问题 ThreadPoolExecutor 和 Executors 都是用来创建线程池...

  • 每日一结——Executors,ThreadPoolExecut

    Executors Executors提供了4种创建线程池的方法: newCachedThreadPool:创建一...

  • 线程池

    Executors 创建线程池 Executors.newCachedThreadPool:创建可缓存无限制数量的...

  • Java并发 之 线程池系列 (2) 使用ThreadPoolE

    Executors的“罪与罚”Executors的源码让你的JVM OutOfMemoryError阿里巴巴Jav...

  • jdk 线程池

    Executors WorkStealingPool ForkJoinPool

网友评论

      本文标题:Executors

      本文链接:https://www.haomeiwen.com/subject/qdibqktx.html