当前位置:嗨网首页>书籍在线阅读

18-运行阶段性并发任务

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

3.5 运行阶段性并发任务

Phaser 类来执行阶段性并发任务,是Java并发API提供的非常复杂且强大的功能之一。当一些并发任务需要分步骤执行时,该机制便显得非常有用。 Phaser 类提供了在每步结束时同步线程的机制,这使得只有当所有线程都完成第一步后,才会有线程开始执行第二步操作。

与其他同步工具类相同,在初始化 Phaser 对象时,必须指明参与同步的任务数量,但是它可以动态地增加或者减少同步参与者。

本节将介绍如何用 Phaser类 来同步3个并发任务。这3个任务将在3个不同的文件夹及其子文件夹中搜索以 .log 为扩展名并在过去24小时内修改过的文件。这个任务可以分为3步来处理。

  • 得到指定文件夹及其子文件夹中以 .log 为扩展名的文件列表。
  • 对第一步中得到的列表进行筛选,删除修改时间超过24小时的文件。
  • 在控制台中输出结果。

在第一步和第二步结束后,检查列表中是否有元素。如果列表为空,则任务线程结束执行并且从 Phaser 类中淘汰。