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/