当前位置: 首页 > news >正文

中小企业网站建设示范平台中山市网站制作

中小企业网站建设示范平台,中山市网站制作,烟台网站公众号制作,深圳做网站制作引入Java8 lambda背后的主要动机之一是能够尽可能轻松地使用多核的能力#xff08;请参阅精通Lambdas#xff1a;多核世界中的Java编程 #xff09;。 只需将代码从collection.stream()...更改为collection.parallelStream()...您就可以使用即时多线程#xff0c;从而为您的… 引入Java8 lambda背后的主要动机之一是能够尽可能轻松地使用多核的能力请参阅精通Lambdas多核世界中的Java编程 。 只需将代码从collection.stream()...更改为collection.parallelStream()...您就可以使用即时多线程从而为您的计算机带来所有CPU功能。 在这一点上让我们忽略争用。 如果打印出parallelStream所使用的线程的名称您会注意到它们与ForkJoin框架所使用的线程相同如下所示 [ForkJoinPool.commonPool-worker-1] [ForkJoinPool.commonPool-worker-2] 请参阅本杰明·温特伯格的博客 以获取一个很好的示例。 现在在Java 8中您可以将这个commonPool与ForkJoinPool commonPool上的新方法直接一起使用。 这将返回带有commonPool线程的ForkJoinPool这是一个ExecutorService实例–与parallelStream中使用的线程相同。 这意味着您直接使用commonPool进行的任何工作都可以与parallelStream中完成的工作很好地配合尤其是线程调度和线程之间的窃取。 让我们来看一个如何使用ForkJoin的示例尤其是在处理棘手的异常主题时。 首先通过调用ForkJoin.commonPool()获得commonPool的实例。 您可以使用submit()方法向其提交任务。 因为我们使用的是Java8所以我们可以传入lambda表达式这确实很不错。 与所有ExecutorService实现一样您可以将Runnable或Callable实例传递给Runnable submit() 。 当您将lambda传递给Submit方法时它将通过检查方法签名将其自动转换为Runnable或Callable 。 这导致一个有趣的问题突出了lambda如何工作。 假设您有一个返回类型为void的方法如Runnable但抛出了一个已检查的异常如Callable。 参见方法throwException() 在下面的代码清单中可以找到这样的例子。 如果您编写此代码它将无法编译。 Future task1 commonPool.submit(() - {throwException(task 1);}); 这样做的原因是由于void返回类型编译器假定您正在尝试创建Runnable。 当然Runnable不能抛出异常。 要解决此问题您需要强制编译器了解您正在创建一个Callable使用此代码技巧可以允许抛出Exception。 Future task1 commonPool.submit(() - {throwException(task 1);return null;}); 这有点混乱但可以完成工作。 可以说编译器本来可以解决这个问题。 下面的完整代码清单中还有两点要强调。 第一您可以使用commonPool.getParallelism()看到池中有多少个线程可用。 可以使用参数-Djava.util.concurrent.ForkJoinPool.common.parallelism进行调整。 第二注意如何解开ExecutionException以便您的代码仅向其调用者显示IOException而不是非特定的ExecutionException。 另请注意此代码在第一个异常时失败。 如果要收集所有异常则必须适当地构造代码可能会返回异常列表。 或者更巧妙地抛出一个包含基础异常列表的自定义异常。 public class ForkJoinTest {public void run() throws IOException{ForkJoinPool commonPool ForkJoinPool.commonPool();Future task1 commonPool.submit(() - {throwException(task 1);return null;});Future task2 commonPool.submit(() - {throwException(task 2);return null;});System.out.println(Do something while tasks being executed on commonPool.getParallelism() threads);try {//wait on the result from task2task2.get();//wait on the result from task1task1.get();} catch (InterruptedException e) {throw new AssertionError(e);} catch (ExecutionException e) {Throwable innerException e.getCause();if (innerException instanceof RuntimeException) {innerException innerException.getCause();if(innerException instanceof IOException){throw (IOException) innerException;}}throw new AssertionError(e);}}public void throwException(String message) throws IOException,InterruptedException {Thread.sleep(100);System.out.println(Thread.currentThread() throwing IOException);throw new IOException(Throw exception for message);}public static void main(String[] args) throws IOException{new ForkJoinTest().run();} }翻译自: https://www.javacodegeeks.com/2015/02/java8-multi-threading-forkjoinpool-dealing-with-exceptions.html
http://www.pierceye.com/news/725193/

相关文章:

  • 漯河网站推广多少钱做调查网站的问卷哪个给的钱高
  • 局域网下怎么访问自己做的网站做网站时如何将前端连接到后台
  • 网页设计与网站建设考试名词解释长治县网站建设
  • 商务网站建设实训报告总结南京太阳宫网站建设
  • 网站建设合同缴纳印花税吗建设企业网站官网登录
  • 石家庄网站开发多少钱做网站和做程序一样吗
  • cpa项目怎么做必须有网站么百度快速收录3元一条
  • 建造网站 备案产品推广文案100字
  • 希腊网站后缀昆山网站推广
  • 企业网站模板seo个人网站制作成品图片
  • 政务网站群建设需求调研表网站优化方案基本流程
  • 那个网站做调查问卷能赚钱架设一个网站
  • 什么网站是免费的合肥网页设计工资一般多少
  • 学校网站建设招聘提高网站浏览量
  • 特色专业网站建设模板北京网站建设公司分享网站改版注意事项
  • 网站上做地图手机上显示不出来的seo长尾快速排名
  • 网站怎么进行网络推广技术支持 湖州网站建设
  • 旅游找什么网站好仿朋友圈网站建设
  • 设置wordpress首页显示文章摘要aso优化是什么意思
  • 乡镇门户网站建设的现状及发展对策深圳网站建设评价
  • 河南省洛阳市建设银行的网站网站获得流量最好的方法是什么 ( )
  • 西安网站制作托wordpress媒体页
  • 杜集网站建设php网站怎么样
  • 山西做网站敬请期待哦
  • 前台网站开发技术Wordpress 建立学生档案
  • 邯郸网站制作找谁设置备份管理wordpress
  • 乌海学校网站建设镇江抖音seo
  • 网站建设在哪wordpress ping地址
  • 资讯文章网站模板徐州百度推广
  • 网站排名如何做西安有哪些网站设计公司