Executors.newSingleThreadExecutor() 装饰者模式

 

 

装饰者模式    

内部调用了new ThreadPoolExecutor的构造方法,传入的corePoolSize和maximumPoolSize都为1。然后将该对象传给了FinalizableDelegatedExecutorService。该类修饰了ThreadPoolExecutor,让外部无法调用ThreadPoolExecutor内部的某些方法来修改所创建的线程池的大小。

  • SingleThread和newFixedThreadPool(1)的区别

    • newFixedThreadPool(1)传值为1,可以将FixedThreadPool强转为ThreadPoolExecutor,然后通过setCorePoolSize改变核心线程数
    // 强转为ThreadPoolExecutor
    ThreadPoolExecutor threadPool = (ThreadPoolExecutor) Executors.newFixedThreadPool(1);
    // 改变核心线程数
    threadPool.setCorePoolSize(2)
  • 而SingleThread无法修改核心线程数

 

new FinalizableDelegatedExecutorService
    (new ThreadPoolExecutor(1, 1,
                            0L, TimeUnit.MILLISECONDS,
                            new LinkedBlockingQueue<Runnable>()));

  

posted @ 2022-03-26 23:01  贪、欢  阅读(359)  评论(0)    收藏  举报