关于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预测的那样,并发技术将进入主流,这个过程会持续数年。
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预测的那样,并发技术将进入主流,这个过程会持续数年。