ExecutorService创建线程池

ExecutorService threadPool = new ThreadPoolExecutor(
5,
10,
3,
TimeUnit.SECONDS,
new LinkedBlockingDeque<>(3),
Executors.defaultThreadFactory(),
new ThreadPoolExecutor.DiscardOldestPolicy());

5: 核心线程数为5,即最小保持活动的线程数量。
10: 最大线程数为10,即线程池中允许的最大线程数量。
3: 线程空闲时间为3秒,超过这个时间,多余的空闲线程会被回收。
TimeUnit.SECONDS: 指定上述空闲时间的时间单位为秒。
new LinkedBlockingDeque<>(3): 使用LinkedBlockingDeque作为任务队列,队列容量为3。这意味着当任务提交给线程池时,如果核心线程已满且任务队列已满,则会创建新线程,直到达到最大线程数。
Executors.defaultThreadFactory(): 使用默认的线程工厂来创建新线程。
new ThreadPoolExecutor.DiscardOldestPolicy(): 当任务无法立即执行并且任务队列已满时,将丢弃最老的任务,并尝试重新添加当前任务。

线程池相对于单独线程具有以下好处:

资源管理:线程池可以有效地管理和复用线程,避免频繁地创建和销毁线程带来的开销。通过维护一定数量的线程池,可以更好地利用系统资源。

减少线程创建开销:线程的创建和销毁是会带来开销的,线程池能够重复使用已创建的线程,从而减少了这些开销。

控制并发数量:通过设定线程池的大小(核心线程数、最大线程数、任务队列大小等),可以控制并发执行的任务数量,避免过度消耗系统资源。

提高响应速度:当有任务提交时,线程池中的线程可以立即执行,而不需要等待新线程创建,从而提高了响应速度。

提高系统稳定性:合理配置线程池可以避免因为线程过多导致系统资源耗尽或者性能下降的问题,提高了系统的稳定性。

统一管理:线程池可以集中管理线程的生命周期、状态和异常处理,使代码更加清晰和易于维护。

总的来说,线程池能够提高程序的性能、响应速度和资源利用率,同时也能够更好地控制并发情况,使得多线程编程更加有效和稳定

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值