首页 > 编程语言 > 详细

线程池

时间:2018-08-05 11:30:56      阅读:144      评论:0      收藏:0      [点我收藏+]

为什么用线程池?

创建线程需要较大的系统开销;可以有效的控制线程最大并发数;可以对线程进行一些简单的管理(例如:延时执行、定时循环执行的策略)

常见的四种线程池

fixThreadPool

有核心线程,固定的线程数量,响应的速度快。

 public static ExecutorService newFixedThreadPool(int threads)
    {
    return newFixedThreadPool(threads,threads,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>());
    }

caCheThreadPool  

只有非核心线程,最大线程数很大(Int.Max(values)),它会为每一个任务添加一个新的线程,这边有一个超时机制,当空闲的线程超过60s内没有用到的话,就会被回收。缺点就是没有考虑到系统的实际内存大小。

  public static ExecutorService newCachedThreadPool(int threads)
    {
    return newFixedThreadPool(threads,Integer.MAX_VALUE,60L, TimeUnit.SECONDS,new SynchronousQueue<Runnable>());
    }

singleThreadPool

只有一个核心线程,排队执行

ScheduledThreadPool   

唯一一个有延迟执行和周期重复执行的线程池。它的核心线程池固定,非核心线程的数量没有限制,但是闲置时会立即会被回收。

 

线程池

原文:https://www.cnblogs.com/chenxiaobo/p/9424823.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!