常见的四种线程池和区别
2017-09-25 15:55
204 查看
线程池能有效的处理多个线程的并发问题,避免大量的线程因为互相强占系统资源导致阻塞现象,能够有效的降低频繁创建和销毁线程对性能所带来的开销。真正线程池的实现是通过ThreadPoolExecutor,ThreadPoolExecutor通过配置不同的参数配置来创建线程池。下面简单的介绍一下各个线程池的区别和用处。
(1)fixThreadPool 正规线程
我的理解这是一个有指定的线程数的线程池,有核心的线程,里面有固定的线程数量,响应的速度快。正规的并发线程,多用于服务器。固定的线程数由系统资源设置。
(2)caCheThreadPool 缓存线程池
只有非核心线程,最大线程数很大(Int.Max(values)),它会为每一个任务添加一个新的线程,这边有一个超时机制,当空闲的线程超过60s内没有用到的话,就会被回收。缺点就是没有
4000
考虑到系统的实际内存大小。
(3)singleThreadPoll 单线程线程池
看这个名字就知道这个家伙是只有一个核心线程,就是一个孤家寡人,通过指定的顺序将任务一个个丢到线程,都乖乖的排队等待执行,不处理并发的操作,不会被回收。确定就是一个人干活效率慢。
(4)ScheduledThreadPoll
这个线程池就厉害了,是唯一一个有延迟执行和周期重复执行的线程池。它的核心线程池固定,非核心线程的数量没有限制,但是闲置时会立即会被回收。
(1)fixThreadPool 正规线程
我的理解这是一个有指定的线程数的线程池,有核心的线程,里面有固定的线程数量,响应的速度快。正规的并发线程,多用于服务器。固定的线程数由系统资源设置。
public static ExecutorService newFixedThreadPool(int threads) { return newFixedThreadPool(threads,threads,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>()); }
核心线程是没有超时机制的,队列大小没有限制,除非线程池关闭了核心线程才会被回收。
(2)caCheThreadPool 缓存线程池
只有非核心线程,最大线程数很大(Int.Max(values)),它会为每一个任务添加一个新的线程,这边有一个超时机制,当空闲的线程超过60s内没有用到的话,就会被回收。缺点就是没有
4000
考虑到系统的实际内存大小。
public static ExecutorService newCachedThreadPool(int threads) { return newFixedThreadPool(threads,Integer.MAX_VALUE,60L, TimeUnit.SECONDS,new SynchronousQueue<Runnable>()); }
(3)singleThreadPoll 单线程线程池
看这个名字就知道这个家伙是只有一个核心线程,就是一个孤家寡人,通过指定的顺序将任务一个个丢到线程,都乖乖的排队等待执行,不处理并发的操作,不会被回收。确定就是一个人干活效率慢。
(4)ScheduledThreadPoll
这个线程池就厉害了,是唯一一个有延迟执行和周期重复执行的线程池。它的核心线程池固定,非核心线程的数量没有限制,但是闲置时会立即会被回收。
相关文章推荐
- JAVA中MAP的四种类型区别和常见的简单用法
- Android开发--常见的四种线程池
- Android 四种常见的线程池
- Android多线程--Android中常见的四种线程池
- JPG png GIF BMP四种常见图像格式的区别
- Android 四种常见的线程池
- Android 四种常见的线程池
- Java多线程——EXECUTORSERVICE线程池讲解(主要是四种自带线程池的区别)
- 四种常见线程池的基本用法
- java中四种线程池的区别
- XML--Java中的四种常见解析的区别
- 四种线程池
- Java四种线程池的使用
- 线程的四种状态以及wait和sleep的区别
- 线程池大小设置与BlockingQueue的三种实现区别(顶)
- Apache/Tomcat/JBOSS/Neginx/lighttpd/Jetty等一些常见服务器的区别比较和理解
- SAP 四种数据共享的方式及区别
- Thread--01在线程池使用Callable和Runnable的区别以及如何关闭线程
- 网络工程师常见面试问题之【路由器与交换机的区别】
- Java四种线程池的使用