This question already has answers here:
Executors.newCachedThreadPool() versus Executors.newFixedThreadPool()
(8个答案)
5年前关闭。
如果按照
为什么
上面的任何澄清都非常有帮助。
不同之处在于:
后60秒过期
(8个答案)
5年前关闭。
如果按照
newCachedThreadPool()
创建了一个线程池,该线程池根据需要创建了新线程,但是将在它们可用时重用以前构造的线程,而如果使用newFixedThreadPool(int size)
,则指定大小以创建具有指定大小的线程池。为什么
newFixedThreadPool(int size)
不能以newCachedThreadPool()
的方式实现,即线程池仅在需要时才创建新线程,并且会限制线程的大小?上面的任何澄清都非常有帮助。
最佳答案
newFixedThreadPool
也懒惰地创建线程。试试这个测试:
ThreadPoolExecutor p = (ThreadPoolExecutor) Executors.newFixedThreadPool(2);
System.out.println(p.getPoolSize());
p.execute(new Runnable() {public void run() {}});
System.out.println(p.getPoolSize());
不同之处在于:
newFixedThreadPool
的线程永不过期,而newCachedThreadPool
的线程在上次使用newCacheThreadPool
的最大 Activity 线程数是无限的07-26 01:39