Java并发包中的线程池的种类和特性介绍

Java并发包中的线程池的种类和特性介绍

Java并发包提供了包括原子量、并发集合、同步器、可重入锁、线程池等强大工具。这里我们来学习一下线程池的种类和特性介绍。

线程池介绍

如果给每项任务都分配一个线程,当任务特别多的时候,可能会超出系统承载能力。而且线程的创建和销毁是非常耗费资源的操作。如果我们在系统启动时就维持几个固定的线程,如果有新的任务到来就分配这些线程来执行操作,当操作完成后继续等待新的任务到来,我们就有了一个线程池。

5种线程池

  1. Single Thread Executor : 只有一个线程的线程池,因此所有提交的任务是顺序执行,
    代码: Executors.newSingleThreadExecutor()

  2. Cached Thread Pool : 线程池里有很多线程需要同时执行,老的用线程将被新的任务触发重新执行,如果线程超过60秒内没执行,那么将被终止并从池中删除,
    代码:Executors.newCachedThreadPool()

  3. Fixed Thread Pool : 拥有固定线程数的线程池,如果没有任务执行,那么线程会一直等待,
    代码: Executors.newFixedThreadPool(4)
    在构造函数中的参数4是线程池的大小,你可以随意设置,也可以和cpu的核数量保持一致,获取cpu的核数量int cpuNums = Runtime.getRuntime().availableProcessors();

  4. Scheduled Thread Pool : 用来调度即将执行的任务的线程池,可能是不是直接执行, 每隔多久执行一次… 策略型的
    代码:Executors.newScheduledThreadPool()

  5. Single Thread Scheduled Pool : 只有一个线程,用来调度任务在指定时间执行,代码:Executors.newSingleThreadScheduledExecutor()

到底线程池中有多少线程比较合适呢?一般来说计算密集型,线程可以比较少,IO密集型可以分配比较多的线程。大部分情况下与CPU核数一致比较好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值