Java8中的简易并发

我们在《实战Java高并发程序设计》一书中,专门介绍过java 8中对并发的改进。这里我通过转载一篇博客来说简单介绍下。

有人曾经说过(很抱歉,我们找不到原句了):

初级程序员认为并发很难。
中级程序员认为并发很简单。
高级程序员认为并发很难。

这说的很对。但是从好的方面来看,Java8为我们带来了转机,通过lambda表达式和改进的API可以使得编写并发代码更容易。让我们来具体的看看Java8的改进吧:

Java8对JDK 1.0 API的改进

java.lang.Thread早在JDK 1.0版本中就已经存在。在java8中被注解为功能性接口java.lang.Runnable也是。

从现在起,几乎不需要动大脑我们就可以提交Runnables给一个线程。让我们假设我们有一个很耗时的操作:

1publicstaticint longOperation() { 2    System.out.println("Running 3 on thread #" 4    + 5 Thread.currentThread().getId()); 6  7    // 8 [...] 9    return42; 10}

我们可以用多种方法把这个操作传递给线程,例如:

1Thread[] 2 threads = { 3 4   5 6    // 7 Pass a lambda to a thread 8 9    newThread(() 10 -> { 11 12    longOperation(); 13 14    }), 15 16   17 18    // 19 Pass a method reference to a thread 20 21    newThread(ThreadGoodies::longOperation) 22 23}; 24 25   26 27// 28 Start all threads 29 30Arrays.stream(threads).forEach(Thread::start); 31 32   33 34// 35 Join all threads 36 37Arrays.stream(threads).forEach(t 38 -> { 39 40    try{ 41 t.join(); } 42 43    catch(InterruptedException 44 ignore) {} 45 46});

就像我们在之前的博文里提到的一样,lambda表达式没有一个简洁的方式来处理被检查异常实在是一大憾事。在java.util.function包中新增的功能性接口都不会抛出被检查异常,把这项工作留给了调用端。

在上一篇博文中,我们已经因此而发布了jOOλ(also jOOL,jOO-Lambda)包,该包包装了JDK中的每一个功能性接口,具有相同功能而且也允许抛出被检异常。这在使用老的JDK API时特别有用,例如JDBC,或者上面提到的Thread API。使用jOOλ,我们可以这么写:

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Java日期时间API系列31

  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前

Java8中的简易并发

Java8中的简易并发 分享到:5本文由ImportNewkingviker翻译自jaxenter。欢迎加入Java小组。转载请参见文章末尾的要求。有人曾经说过(很抱歉,我们找不到原句了):初级程序员认为并发很难。中级程序员认为并发很简单。高级程序员认为并发很难。这说的很对。但是从好的方面来看

35岁,真的是程序员的一道坎吗?

“程序员35岁是道坎”,“程序员35岁被裁”……这些话咱们可能都听腻了,但每当触及还是会感到丝丝焦虑,毕竟每个人都会到35岁。而国内互联网环境确实对35岁以上的程序员不太友好:薪资要得高,却不如年轻人加班猛;虽说经验丰富,但大部分公司并不需要太资深的程序员。但35岁危机并不是不可避免的,比如你可以不断精进技术,将来做技术管理或者