长沙尚学堂|十年树人|成就高薪
致力推动IT教育,我们正在行动    咨询热线:0731-83072091

java培训学校关于java并发编程的四种方法探讨!(第四章)

时间:2015-12-10 16:11:21   来源:长沙尚学堂   阅读:
(第四章)
 
长沙尚学堂java培训学校关于并发方法三的介绍和讲解如下:
 
长沙尚学堂java培训学校关于并发方法三:
 
    通过并行流,使用ForkJoinPool (FJP)
 
  Java 8中加入了并行流,从此我们有了一个并行处理集合的简单方法。它和lambda一起,构成了并发计算的一个强大工具。
 
  如果你打算运用这种方法,那么有几点需要注意。首先,你必须掌握一些函数编程的概念,它实际上更有优势。其次,你很难知道并行流实际上是否使用了超过一个线程,这要由流的具体实现来决定。如果你无法控制流的数据源,你就无法确定它做了什么。
 
  另外,你需要记住,默认情况下是通过ForkJoinPool.commonPool()实现并行的。这个通用池由JVM来管理,并且被JVM进程内的所有线程共享。这简化了配置项,因此你不用担心。
 
  private static String getFirstResult(String question, List engines) {
  // get element as soon as it is available
  Optional result = engines.stream().parallel().map((base) -> {
  String url = base + question;
  return WS.url(url).get();
  }).findAny();
  return result.get();
  }
 
  看上面的例子,我们不关心单独的任务在哪里完成,由谁完成。然而,这也意味着,你的应用程序中可能存在一些停滞的任务,而你却无法不知道。在另一篇关于并行流的文章中,我详细地描述了这个问题。并且有一个变通的解决方案,虽然它并不是世界上最直观的方案。
 
  ForkJoin是一个很好的框架,由比我更聪明的人来编写和预先配置。因此当我需要写一个包含并行处理的小型程序时,它是我的第一选择。
 
  长沙尚学堂java培训学校经过总结得出,它最大的缺点是,你必须预见到它可能产生的并发症。如果对JVM没有整体上的深入了解,这很难做到。这只能来自于经验。
 
 
第四章完结,未完待续......
分享:0
开班计划
热门文章
视频下载
猜你喜欢