java ForkJoinPool异步运行任务

很久没有进行concurrent包的学习了,这次复习ForkJoinPool,研究新的方法。

是什么,怎么做?

 

一、是什么

在ForkJoinPool中执行ForkJoinTask时,可以采用同步或者异步的方式。

同步:发送给线程池的方法(就算已经执行完毕了)直到整个任务执行完成后才会返回结果。

异步:发送给线程池的方法执行完毕后立即返回结果,当前任务继续执行。

主要体现在fork和join两种方法的使用区别上。fork方法异步执行任务,join方法同步执行任务。

当一个任务需要在线程池中加入新的异步任务时,使用fork方法。在主线程中同步执行任务获取结果时,使用join方法。

二、怎么做

有如下情景:

遍历指定的文件目录,统计该目录下某类型的文件数量。如果目录中存在更下级的目录,则继续遍历,直到遍历完成为止,统计结果。

实现思路大致如下:

建立一个遍历任务,指定遍历的路径和文件类型。如果路径为目录,则遍历所有文件,如果存在更下级的目录,则创建新任务继续遍历,在每个任务都进行一次统计,最后进行汇总。

Test.java

运行结果:

三、总结

简单的复习。

发表评论

电子邮件地址不会被公开。 必填项已用*标注