fork/join框架_java forkjoinpool_fork join框架(21)

电脑杂谈  发布时间:2017-04-10 18:05:20  来源:网络整理

35.在控制台输出信息表示程序结束。

System.out.printf("Main: The program has finished\n");

ForkJoinTask类提供的cancel()方法允许取消一个仍没有被执行的任务,这是非常重要的一点。如果任务已经开始执行,那么调用cancel()方法也无法取消。这个方法接收一个名为mayInterruptIfRunning的boolean值参数。顾名思义,如果传递true值给这个方法,即使任务正在运行也将被取消。JavaAPI文档指出,ForkJoinTask类的默认实现,这个属性没有起作用。如果任务还没有开始执行,那么这些任务将被取消。任务的取消对于已发送到线程池中的任务没有影响,它们将继续执行。

Fork/Join框架的局限性在于,ForkJoinPool线程池中的任务不允许被取消。为了克服这种局限性,我们实现了TaskManager类,它存储发送到线程池中的所有任务,可以用一个方法来取消存储的所有任务。如果任务正在运行或者已经执行结束,那么任务就不能被取消,cancel()方法返回false值,因此可以尝试去取消所有的任务而不用担心可能带来的间接影响。

这个范例实现在数字数组中寻找一个数字。根据Fork/Join框架的推荐,我们将问题拆分为更小的子问题。由于我们仅关心数字的一次出现,因此,当找到它时,就会取消其他的所有任务。

下面的截图展示了范例执行的部分结果。

转载自:

参考:


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-40557-21.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 杨艳芳
      杨艳芳

      尚善若水

    • 刘慎虚
      刘慎虚

      柬埔寨之类的国家的女孩回来能上户口话至少解决掉几百万的光棍

    热点图片
    拼命载入中...