java concurrent笔记

本文介绍Java中的线程管理接口,包括Executor、ExecutorService和ScheduledExecutorService,以及线程池如ThreadPoolExecutor和ScheduledThreadPoolExecutor。此外还探讨了Fork/Join框架的工作原理及其核心组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Executor Interfaces

三种线程管理接口,所有任务都需要提交给它们之一,才能得到执行:

  • Executor——启动(或执行)新任务
  • ExecutorService——扩展Executor,支持管理任务和自身生命周期
  • ScheduledExecutorService——扩展ExecutorService,支持日程(或计划任务)

其中ExecutorService管理任务的生命周期体现在通过submit方法返回的Future类上,Future定义有取消任务和获取任务结果的方法。
ScheduledExecutorService中的日程指的是可以延时或周期性执行任务。

enter image description here

Thread Pools

上面的线程管理接口(executor)的实现有:

  • ThreadPoolExecutor——维护用于任务执行需要的线程池
  • ScheduledThreadPoolExecutor——支持日程的ThreadPoolExecutor

上面所示的Executor可以通过Executors工厂类来创建配置。

enter image description here

Fork/Join

为了更好地利用现代计算机的多核架构,提供Fork/Join型线程池:ForkJoinPool。如果任务可以分解为更小的多个子任务,并允许子任务并行运行,最终将子任务结果合并便为原任务结果。对于这种情况就可以使用ForkJoinPool来实现。该线程池提供了一种在多线程下实现分治算法的方案。在类Arrays中的parallelSort()方法正是其应用场景。
运行在ForkJoinPool中的任务由特殊的类来描述,并在特殊的线程中运行:

  • ForkJoinTask——可分解任务
  • ForkJoinWorkerThread——运行ForkJoinTask任务的线程

enter image description here

Written with StackEdit.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值