java并发编程知识点
JAVA并发编程的基础篇知识:
Excutor接口类:
子接口:
实现类:
此接口不要求一定异步(在单独的线程中)执行,采用这个接口的任务也可以在调用任务的线程中直接,同步地去进行
▶
异步执行
1 |
|
一个复合执行器代码的实现:
许多
Executor
实现对任务的调度方式和时间施加某种限制。下面的执行器将任务提交序列化到第二个执行器
- 它的作用是将多个提交的任务按顺序串行地执行
▶
实现的一个序列化提交任务到工作队列的代码
1 |
|
分析:
下面是针对上方内容的一个分析
▶
代码运行流程
以下是代码的运行机制:
初始化:
SerialExecutor
包含一个任务队列tasks
,底层委托的executor
(用于实际执行任务),以及一个当前正在运行的任务active
。- 构造函数中传入一个底层
Executor
实例,任务会最终通过这个Executor
执行。
提交任务(
execute
方法):每次调用
1
execute
方法时:
- 新任务
r
会被包装为一个匿名任务,加入tasks
队列。 - 包装后的任务在运行时,会先执行原任务
r.run()
,然后调用scheduleNext()
来触发下一个任务。 - 如果当前没有正在运行的任务(
active == null
),则调用scheduleNext()
,开始执行队列中的第一个任务。
- 新任务
调度下一个任务(
scheduleNext
方法):- 从
tasks
队列中取出下一个任务(poll
方法),将其设置为当前活跃任务active
。 - 将这个任务提交给底层的
executor
。 - 如果队列为空,则
active
被置为null
,表示所有任务已完成。
- 从
java并发编程知识点
http://example.com/2025/01/03/interview/JUC/OverViewJUC/