2006年11月14日

关于Atomic

应该来说,util.concurrent包中提供的atomic,包括两部分:

1、atomic值对象,例如AtomicInteger、AtomicLong等。常用作计数器。
2、AtomicReference
3、一些内部使用Lock提供的compareAndSet操作。例如ConcurrentHashMap的putIfAbsent。

.NET中也提供了类似的功能,InterLocked类提供着完全的能力。

这是一种思想,提供原子操作,把两个以上的操作合并,使得调用者不需要使用Lock,使得程序结构变得简单,减少出错的可能,包括减少死锁发生的可能,程序也因此获得更好的性能。

将会有更多的数据结构支持atomic操作,JDK 1.5提供了支持atomic操作的ConcurrentMap、JDK 1.6提供了支持atomic的ConcurrentNavigableMap。

如同Herb Sutter预测的那样,并发技术将进入主流,这个过程会持续数年。

posted @ 2006-11-14 21:24 温少 阅读(1053) 评论(0) 编辑

JDK 1.6中的并发

客户端程序应用

无意发现的一个类

package javax.swing;

public abstract class SwingWorker<T, V> implements RunnableFuture<T> { }


也就是,一些并发相发的设计模式,已经应用在客户端程序设计中。

我没有对swing关注更多,只是觉得预想中的趋势开始出现了。

Exchanger

重写了,支持N parties。


RunnableFuture

这是理所当然的事情,Executor使用之后,FutureTask这个东西常用,兼有Runnable和Future,所以出现一个RunnableFuture是理所当然。


ConcurrentNavigableMap

一些系列的派生类,例如ConcurrentSkipListMap等等,还没用过,大概就是一个并发支持的SortedMap了。


posted @ 2006-11-14 01:27 温少 阅读(1223) 评论(0) 编辑