<分区>
如果 newCachedThreadPool()
根据需要创建一个线程池,该线程池会根据需要创建新线程,但会在可用时重用先前构造的线程,而如果是 newFixedThreadPool(int size)
指定大小创建指定大小的线程池。
为什么newFixedThreadPool(int size)
没有以newCachedThreadPool()
方式实现,其中线程池仅在需要时创建新线程并将线程限制为大小?
对上述内容的任何澄清都非常有帮助。
<分区>
如果 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
的线程在上次使用 60 秒后过期newCacheThreadPool
的最大 Activity 线程数没有限制关于java - newFixedThreadPool() 与 newCachedThreadPool(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29620591/