Archive for the ‘ 并发译文 ’ Category

CompletableFuture 不能被中断

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

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

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: CompletableFuture 不能被中断

InterruptedException 和 interrupting threads 的一些说明

原文链接 作者:  译者:simonwang

如果InterruptedException没有检测到异常,可能没人会注意到它,这会导致很多bug不被发现。而检测到这个异常的人大多数都是草率地、不恰当地处理着它。

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: InterruptedException 和 interrupting threads 的一些说明

我们的垃圾收集器

原文链接

(译者注:这篇博文发表在2008年,虽然年代有些久远,但是文中说到的垃圾收集器我们至今还在使用,作者也谈到了对于G1垃圾收集器的期望。)

最近我在白板上给客户化了一个图表,他们似乎对这个有点兴趣,所以我想我可以重画一遍来给你们消遣。

Collectors1

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 我们的垃圾收集器

哪个线程执行 CompletableFuture’s tasks 和 callbacks?

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

CompletableFuture尽管在2014年的三月随着Java8被提出来,但它现在仍然是一种相对较新潮的概念。但也许这个类不为人所熟知是好事,因为它很容易被滥用,特别是涉及到使用线程和线程池的时候。而这篇文章的目的就是要描述线程是怎样使用CompletableFuture的。

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 哪个线程执行 CompletableFuture’s tasks 和 callbacks?

ExecutorService-10个要诀和技巧

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

ExecutorService抽象概念自Java5就已经提出来了,现在是2014年。顺便提醒一下:Java5和Java6都已不被支持,Java7在半年内也将会这样。我提出这个的原因是许多Java程序员仍然不能完全明白ExecutorService到底是怎样工作的。还有很多地方要去学习,今天我会分享一些很少人知道的特性和实践。然而这篇文章仍然是面向中等程序员的,没什么特别高级的地方。

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: ExecutorService-10个要诀和技巧

SLF4J 扩展

原文链接: SLF4J extensions   译者:D瓜哥

SLF4J 扩展被打包在 slf4j-ext.jar里,它随着 SLF4J 一起发布。

主要内容包含如下几部分:

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: SLF4J 扩展

Apache Velocity开发者指南–导读

原文链接   译者:小村长

Velocity–导读

本项目是 Apache Velocity官方文档的中文翻译版,Velocity类似与Jsp,是一种基于Java的模板引擎。它可以在web页面中引用java代码定义的数据和对象,而Velocity的作用就是Web视图和java代码进行组装在一起。本次翻译主要针对对Velocity感兴趣和工作中使用到Velocity的开发人员提供有价值的中文资料,希望能够对大家的工作和学习有所帮助。

由于我也是第一次接触Velocity,还不是很深入,翻译的时候也查看了一些博客以及其他网上资料。以及也测试者去了解它和Jsp方面的差别以及优缺点,同时也去了解了下他和其他Java引擎模板的区别,比如freemaker的区别,等等。但是还是因为能力见识有限,翻译过程中难免出现个人的主观或者客观原因导致与官方文档有差异。在此,我还是建议有能力的童鞋能够自己去Velocity官方看看。

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Apache Velocity开发者指南–导读

《Redis官方文档》用Redis构建分布式锁

原文链接  译者:yy-leo   校对:方腾飞(红体标记重点)

用Redis构建分布式锁

在不同进程需要互斥地访问共享资源时,分布式锁是一种非常有用的技术手段。 有很多三方库和文章描述如何用Redis实现一个分布式锁管理器,但是这些库实现的方式差别很大,而且很多简单的实现其实只需采用稍微增加一点复杂的设计就可以获得更好的可靠性。 这篇文章的目的就是尝试提出一种官方权威的用Redis实现分布式锁管理器的算法,我们把这个算法称为RedLock,我们相信这个算法会比一般的普通方法更加安全可靠。我们也希望社区能一起分析这个算法,提供一些反馈,然后我们以此为基础,来设计出更加复杂可靠的算法,或者更好的新算法。

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《Redis官方文档》用Redis构建分布式锁

运行时和编译时元编程—编译时元编程

原文链接    译文链接     译者:JackWang

运行时和编译时元编程 第二部分

2 编译时元编程

Groovy的编译时元编程支持编译时生成代码。这些变换(译者注:原文该专有名词是transformations,译者直译为变换,也许不准确。如果有知道准确翻译的读者恳请不吝赐教,待译者修正)叫做程序的抽象语法树(AST),在Groovy里,我们叫做AST变换。AST变换支持在编译过程中植入钩子,修改抽象语法树之后继续编译生成正常的字节码流。和运行时元编程相比,这种转换可以在类文件的修改可见(或者说是字节码流)。如果你想要你的转换成为类协议的一部分(类协议是指实现接口,继承抽象类等等…)甚至你需要你的类可以被Java(或其他JVM语言)调用,在字节码流的修改可见是非常重要的。比如说,一个AST转换可以添加方法到一个类。在运行时元编程里,你需要使你的新方法在Groovy里可见,在编译时元编程要实现同样的功能,这个方法仅仅需要对Java可见即可。最后也同样重要的是,编译时元编程相比运行时元编程能活的更好的性能(因为没有初始化阶段)。
Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 运行时和编译时元编程—编译时元编程

Adopt Open JDK官方文档(五) Docker镜像

译者:渊策

5.1 复制镜像

镜像可以从别的设备复制并导入本地的Docker仓库。

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Adopt Open JDK官方文档(五) Docker镜像

Adopt Open JDK官方文档(三)对Adopt OpenJDK的初步了解

译文地址 译者:郑玉婷

3. 对Adopt OpenJDK的初步了解


Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Adopt Open JDK官方文档(三)对Adopt OpenJDK的初步了解

[译]深入 NGINX: 为性能和扩展所做之设计

原文链接:Inside NGINX: How We Designed for Performance & Scale 翻译:丁一

NGINX在web性能上的表现尤为出众,这完全得益于其设计方式,许多web和应用服务器都是基于线程或进程这种简单的架构,NGINX用了一种精妙的事件驱动架构,在现代的硬件上,它可以处理成千上万的并发连接。

Inside NGINX中的信息图对高级别的进程架构和NGINX如何在单个进程中处理多个连接进行了深入探讨。本文更进一步地阐述了NGINX的所有工作原理。

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: [译]深入 NGINX: 为性能和扩展所做之设计

Java内存模型

原文地址  作者:Jakob Jenkov 译者:张坤

Java内存模型规范了Java虚拟机与计算机内存是如何协同工作的。Java虚拟机是一个完整的计算机的一个模型,因此这个模型自然也包含一个内存模型——又称为Java内存模型。 Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Java内存模型

Guava官方文档-RateLimiter类

原文链接 作者:Dimitris Andreou  译者:魏嘉鹏 校对:方腾飞token_bucket

RateLimiter 从概念上来讲,速率限制器会在可配置的速率下分配许可证。如果必要的话,每个acquire() 会阻塞当前线程直到许可证可用后获取该许可证。一旦获取到许可证,不需要再释放许可证。

校对注:RateLimiter使用的是一种叫令牌桶的流控算法,RateLimiter会按照一定的频率往桶里扔令牌,线程拿到令牌才能执行,比如你希望自己的应用程序QPS不要超过1000,那么RateLimiter设置1000的速率后,就会每秒往桶里扔1000个令牌。

com.google.common.util.concurrent.RateLimiter

@ThreadSafe
@Betapublic
abstract class RateLimiter extends Object

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Guava官方文档-RateLimiter类

Java8并发教程:Threads和Executors

原文地址  原文作者:Benjamin Winterberg 译者:张坤

欢迎阅读我的Java8并发教程的第一部分。这份指南将会以简单易懂的代码示例来教给你如何在Java8中进行并发编程。这是一系列教程中的第一部分。在接下来的15分钟,你将会学会如何通过线程,任务(tasks)和 exector services来并行执行代码。

  • 第一部分:Threads和Executors
  • 第二部分:同步和锁

并发在Java5中首次被引入并在后续的版本中不断得到增强。在这篇文章中介绍的大部分概念同样适用于以前的Java版本。不过我的代码示例聚焦于Java8,大量使用lambda表达式和其他新特性。如果你对lambda表达式不属性,我推荐你首先阅读我的Java 8 教程

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Java8并发教程:Threads和Executors

return top