归档之于 ‘ 2016 年八月

《JAVA8开发指南》第二章采用Lambda表达式

原文链接 译者:hyssop

采用Lambda表达式

本章,你将学习到如何采用JAVA8的重要特性Lambda表达式。首先,你要了解“行为参数”这种模式。该模式能够使你写出来的代码适应需求变化。然后,你将看到该模式如何使得Lambda表达式的使用与以往比变得更加简洁。然后,你将学习如何精确地定位Lambda表达式的使用场景和使用方式。你也将了解JAVA8的另一个特性-方法参数,它能使你的代码更简洁更易读。带着所有这些新知识实战一个重构代码的例子。最后,你也将学习到如何使用Lambda表达式和方法参数。

阅读全文

《Mybatis官方文档》翻译邀请

在持久层我们经常使用Ibatis框架,不过从10年开始这个框架已经不再维护了(Ibatis官网),原Ibatis的开发已经投入到MyBatis的开发中,所以本月组织大家翻译《Mybatis官方文档》(需要翻墙),每次领取一节,翻译完后再领取其他章节。翻译完成之后请登录到并发网提交成待审核状态,会有专门的编辑校对后进行发布。值得注意的是官网部分文档已经有翻译了,参与翻译的人可以参考下。

阅读全文

CompletableFuture 不能被中断

原文链接 作者:Tomasz Nurkiewicz  译者:simonwang

我之前写过一篇关于InterruptedException and interrupting threads的文章。总之,如果你调用Future.cancel(),那么Future不仅会终止正在等待的get(),还会试图去中断底层的线程。这是个很重要的特征,它能够使线程池变得更加利于使用。我在之前的文章中也说过,相对于标准的Future,尽量使用CompletableFuture。但事实证明,Future的更加强大的兄弟-CompletableFuture并不能优雅地处理cancel()。

阅读全文

Java中的Functor与monad

原文链接 作者:Tomasz Nurkiewicz  译者:simonwang

这篇文章最初是我们的Reactive Programming with RxJava一书中的附录,然而提到monad即使它与响应式编程有关,但也只是一点点,所以我决定把它单独拿出来出一篇博客。我意识到对monad一边解释一边纠正,对我而言这就像是在编程博客上使用“Hello World”一样(是对是错拉出来溜溜)。而且这篇文章从Java数据结构与库的角度对functor与monad给出了独特见解,因此我认为这值得拿出来分享。

阅读全文

《Netty in Action》中文版—第七章 EventLoop和线程模型

本文翻译自《Netty in Action》第七章  

作者:Norman Maurer, Marvin Allen Wolfthal   译者:桃小胖

本章包含

  • 线程模型概览
  • Event Loop的概念和实现
  • Task调度
  • 实现详解

简单来说,线程模型定义了操作系统,编程语言,框架或者应用程序线程管理的关键部分。线程是如何,并且何时被创建,显然对代码的执行有很大的影响。因此,开发者需要理解不同线程模型中存在的权衡利弊。无论他们是直接为自己选择模型,还是通过用一种语言或者框架隐性地来选择模型,这一点都是毋庸置疑的。

在这一章我们会详细探讨Netty的线程模型。Netty线程模型很强大,不过用起来很简单。Netty总是一如既往地简化你的应用代码,最大化应用的性能和可维护性。我们还会讨论到我们选择Netty目前这个线程模型的整个过程。

如果你对Java并发API(java.util.concurrent)有一个大致的了解,你会感觉本章的讨论很清晰明了。如果你对这些概念不熟悉,或者需要再回忆下,Brian Goetz和其他人合著的《Java并发编程实战》是个很棒的资源。
阅读全文

为什么多线程是个坏主意

原文地址:

Unix编程艺术 中,提到了尽量避免多线程编程模型, 认为这样只会增加复杂度, 提倡使用多进程, 这样本质上就可以避免多线程『共享内存数据』产生的 “corruotped memory” 问题。

其中, 提到了一篇文章 Why Threads Are A Bad Idea, 对于多线程编程和事件编程分析的非常好, 具体的翻译如下:

阅读全文

理解Storm的内部消息缓冲机制

原文链接 作者:Michael G. Noll  译者:lendo

这篇文章是Apache Kafka的作者之一Michael G. Noll写的,他的博客地址在[这里]

优化Storm计算拓扑性能的过程有助于我们理解Storm内部消息队列的配置和使用,在这篇简短的文章中,我将向大家解释并说明Storm(0.8或0.9版本)的一个工作进程(worker process)和与其相关的多个执行器线程是如何完成内部通信的。

阅读全文

return top