线程池的调用

Posted 闫广庆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程池的调用相关的知识,希望对你有一定的参考价值。

创建线程池

一般通过工具类Executors的静态方法来获取线程池或静态方法。介绍四种常用创建方法

ExecutorService service1 = Executors.newSingleThreadExecutor();

说明: 单例线程,表示在任意的时间段内,线程池中只有一个线程在工作

ExecutorService service2 = Executors.newCacheThreadPool();

说明: 缓存线程池,先查看线程池中是否有当前执行线程的缓存,如果有就resue(复用),如果没有,那么需要创建一个线程来完成当前的调用.并且这类线程池只能完成一些生存期很短的一些任务.并且这类线程池内部规定能resue(复用)的线程,空闲的时间不能超过60s,一旦超过了60s,就会被移出线程池

ExecutorService service3 = Executors.newFixedThreadPool(10);

说明: 固定型线程池,和newCacheThreadPool()差不多,也能够实现resue(复用),但是这个池子规定了线程的最大数量,也就是说当池子有空闲时,那么新的任务将会在空闲线程中被执行,一旦线程池内的线程都在进行工作,那么新的任务就必须等待线程池有空闲的时候才能够进入线程池,其他的任务继续排队等待.这类池子没有规定其空闲的时间到底有多长.这一类的池子更适用于服务器.

ExecutorService service4 = Executors.newScheduledThreadPool(10);

说明: 调度型线程池,调度型线程池会根据Scheduled(任务列表)进行延迟执行,或者是进行周期性的执行.适用于一些周期性的工作.



以上是关于线程池的调用的主要内容,如果未能解决你的问题,请参考以下文章

十五、线程池(六)自动创建线程池的弊端

线程池的简单调用(附动态图)

线程池的学习和使用

Android 线程池的封装

线程池的停止

异步线程池的使用