Java 线程池学习

主要有四种方式:

newFixedThreadPool:

创建拥有固定数量的线程池,用于线程的重用。在任何时候都最多有指定个数的线程在运行。当提交的任务多于指定的数量时,新提交的任务需要进行等待,直到原有任务运行完成。

但是请注意,如果单个线程关闭前的执行过程中出现故障,由于终止,如果需要执行后续任务,将会有新取而代之

当线程池调用shutdown后才会停止。

newSingleThreadExecutor:

创建一个只有一个线程的线程池。(注意:但是请注意,如果单个线程关闭前的执行过程中出现故障,由于终止,如果需要执行后续任务,将会有新取而代之)任务保证是顺序执行的,在任何时候都只有一个线程在池中。和其他的比如newFixedThreadPool(1)不同的是,可以无须重新配置就能使用别的线程。

 

newCachedThreadPool:

创建一个可以线程池,如果需要的话,在池中可以创建足够多的线程,同时如果可以的话,也会重复使用以前构造的线程。这个线程池可以极大的提高那种短时间执行的异步任务的执行效率。如果不存在可重用的线程,那么会重新创建一个,并且添加到池中。如果一个一个线程60秒还没有被使用,那么将会被停止并且从池中移除。

newScheduledThreadPool:

创建一个定长线程池,支持递给你是以及周期性任务的执行。

 

其他还有:

newSingleThreadScheduledExecutor:

 

创建只有单个线程的线程池,线程定时周期性的执行任务。

newWorkStealingPool:

创建保持足够的线程来支持给定的并行级,并且可以使用多个队列来降低争用一个线程池。


等等。

 

posted @ 2016-04-04 11:32  youyouhuo  阅读(285)  评论(0编辑  收藏  举报