18-运行阶段性并发任务
3.5 运行阶段性并发任务
用 Phaser
类来执行阶段性并发任务,是Java并发API提供的非常复杂且强大的功能之一。当一些并发任务需要分步骤执行时,该机制便显得非常有用。 Phaser
类提供了在每步结束时同步线程的机制,这使得只有当所有线程都完成第一步后,才会有线程开始执行第二步操作。
与其他同步工具类相同,在初始化 Phaser
对象时,必须指明参与同步的任务数量,但是它可以动态地增加或者减少同步参与者。
本节将介绍如何用 Phaser类
来同步3个并发任务。这3个任务将在3个不同的文件夹及其子文件夹中搜索以 .log
为扩展名并在过去24小时内修改过的文件。这个任务可以分为3步来处理。
- 得到指定文件夹及其子文件夹中以
.log
为扩展名的文件列表。 - 对第一步中得到的列表进行筛选,删除修改时间超过24小时的文件。
- 在控制台中输出结果。
在第一步和第二步结束后,检查列表中是否有元素。如果列表为空,则任务线程结束执行并且从 Phaser
类中淘汰。