Java 线程池学习
Posted youyouhuo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 线程池学习相关的知识,希望对你有一定的参考价值。
主要有四种方式:
newFixedThreadPool:
创建拥有固定数量的线程池,用于线程的重用。在任何时候都最多有指定个数的线程在运行。当提交的任务多于指定的数量时,新提交的任务需要进行等待,直到原有任务运行完成。
但是请注意,如果单个线程关闭前的执行过程中出现故障,由于终止,如果需要执行后续任务,将会有新取而代之。
当线程池调用shutdown后才会停止。
newSingleThreadExecutor:
创建一个只有一个线程的线程池。(注意:但是请注意,如果单个线程关闭前的执行过程中出现故障,由于终止,如果需要执行后续任务,将会有新取而代之)任务保证是顺序执行的,在任何时候都只有一个线程在池中。和其他的比如newFixedThreadPool(1)不同的是,可以无须重新配置就能使用别的线程。
newCachedThreadPool:
创建一个可以线程池,如果需要的话,在池中可以创建足够多的线程,同时如果可以的话,也会重复使用以前构造的线程。这个线程池可以极大的提高那种短时间执行的异步任务的执行效率。如果不存在可重用的线程,那么会重新创建一个,并且添加到池中。如果一个一个线程60秒还没有被使用,那么将会被停止并且从池中移除。
newScheduledThreadPool:
创建一个定长线程池,支持递给你是以及周期性任务的执行。
其他还有:
newSingleThreadScheduledExecutor:
创建只有单个线程的线程池,线程定时周期性的执行任务。
newWorkStealingPool:
创建保持足够的线程来支持给定的并行级,并且可以使用多个队列来降低争用一个线程池。
等等。
以上是关于Java 线程池学习的主要内容,如果未能解决你的问题,请参考以下文章