java 线程池

1.线程池的作用

  限制系统中执行线程的数量

2.为什么要用线程池

 2.1.减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务.

 2.2 可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为消耗过多的内存,而把服务器累趴下。

3.线程池接口类

    3.1 ExecutorService : 真正的线程池接口。

    3.2 ScheduledExecutorService:能和Timer/TimerTask类似,解决那些需要任务重复执行的问题。

    3.3 ThreadPoolExecutor : ExecutorService的默认实现.

    3.4 ScheduledThreadPoolExecutor : 继承ThreadPoolExecutor的ScheduledExecutorService接口实现,周期性任务调度的类实现。

4.线程池的静态工具类 Executors 常用的方法

    4.1 newSingleThreadExecutor  

      创建一个单线程的线程池,采用无边界队列LinkedBlockingQueue.即线程有限,但队列无限.

    4.2 newFixedThreadPool

      创建固定大小的线程池,采用无边界队列LinkedBlockingQueue.即线程有限,但队列无限.

    4.3 newCachedThreadPool

      创建一个可缓存的线程池 ,采用SynchronousQueue队列. 

    4.4 newScheduledThreadPool

      创建一个大小无限的线程池。此线程池支持定时以及周期性执行任务的需求。 

               

 5.线程池的执行策略与BlockingQueue 

    5.1 如果运行的线程少于 corePoolSize(最小线程数量),则 Executor始终首选添加新的线程,而不进行排队.

    5.2 如果运行的线程等于或多于 corePoolSize,则 Executor始终首选将请求加入队列,而不添加新的线程。

    5.3 如果无法将请求加入队列,则创建新的线程,除非创建此线程超出 maximumPoolSize,在这种情况下,任务将被拒绝。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值