归档之于 ‘ 2014 年1 月

为什么java.util.concurrent 包里没有并发的ArrayList实现?

原文链接 作者:Stephen C 译者:郑旭东  校对:方腾飞

问:JDK 5在java.util.concurrent里引入了ConcurrentHashMap,在需要支持高并发的场景,我们可以使用它代替HashMap。但是为什么没有ArrayList的并发实现呢?难道在多线程场景下我们只有Vector这一种线程安全的数组实现可以选择么?为什么在java.util.concurrent 没有一个类可以代替Vector呢?

答:我认为在java.util.concurrent包中没有加入并发的ArrayList实现的主要原因是:很难去开发一个通用并且没有并发瓶颈的线程安全的List。

阅读全文

测试并发应用(七)配置Eclipse来调试并发代码

声明:本文是《 Java 7 Concurrency Cookbook 》的第八章, 作者: Javier Fernández González 译者:郑玉婷 校对:方腾飞

配置Eclipse来调试并发代码

当今,几乎全部的程序员,不管使用什么程序语言,都会用IDE来创建应用。在相同的应用里,他们提供了很多有趣的功能来整合,例如:

  • 任务管理
  • 自动生成代码
  • 自动生成文档
  • 与版本控制系统集成
  • debugger测试应用
  • 创建不同类型的应用和项目

IDE最有用的特点其一就是debugger。你可以一步一步的执行你的应用并分析你的程序中全部对象和变量的值。

如果你使用 Java 编程语言,那么 Eclipse 是最普遍的 IDE 之一。它有一个内置调试器(integrated debugger)允许你测试你的应用。默认情况,等你试调并发应用,debugger 找到断点( breakpoint), 它只是把有断点(breakpoint)的线程停止,其他的线程都继续他们的运行。 阅读全文

AQS的原理浅析

本文是《Java特种兵》的样章,本书即将由工业出版社出版

AQS的全称为(AbstractQueuedSynchronizer),这个类也是在java.util.concurrent.locks下面。这个类似乎很不容易看懂,因为它仅仅是提供了一系列公共的方法,让子类来调用。那么要理解意思,就得从子类下手,反过来看才容易看懂。如下图所示:
QQ图片20140110194431

图 5-15 AQS的子类实现

阅读全文

google Guava包的ListenableFuture解析

原文地址  译者:罗立树  校对:方腾飞

并发编程是一个难题,但是一个强大而简单的抽象可以显著的简化并发的编写。出于这样的考虑,Guava 定义了 ListenableFuture接口并继承了JDK concurrent包下的Future 接口。

我们强烈地建议你在代码中多使用ListenableFuture来代替JDK的 Future, 因为:

  • 大多数Futures 方法中需要它。
  • 转到ListenableFuture 编程比较容易。
  • Guava提供的通用公共类封装了公共的操作方方法,不需要提供Future和ListenableFuture的扩展方法。
    阅读全文

return top