在JDK API文档搜索关键词 Atomic
eg: AtomicInteger AtomicIntegerArray 等, 细节请参看API
需要注意的是: jdk提供的这些类, 仅仅是针对多线程操作 成员变量时 提供的封装好的原子操作类,
如果是多线程下的局部变量,不需要这种类。
J2SE 5.0提供了一组atomic class来帮助我们简化同步处理。基本工作原理是使用了同步synchronized的方法实现了对一个long, integer, 对象的增、减、赋值(更新)操作。
以java多线程用法-使用AtomicInteger来简要对比下:
class Counter { private volatile int count = 0; public synchronized void increment() { count++; //若要线程安全执行执行count++,需要加锁 } public int getCount() { return count; } } class Counter { private AtomicInteger count = new AtomicInteger(); public void increment() { count.incrementAndGet(); } //使用AtomicInteger之后,不需要加锁,也可以实现线程安全。 public int getCount() { return count.get(); } }
在高并发访问时统计程序计数如果不加锁是肯定线程不安全的。
AtomicInteger能够达到多而不乱,处理高并发应付自如,是因为硬件提供原子操作指令实现,
相对于第一种写法的加锁操作,后者在非激烈竞争的情况下,开销更小,速度更快。
Java.util.concurrent中实现的原子操作类包括:
AtomicBoolean、AtomicInteger、AtomicLong、AtomicReference。
相关推荐
java.util.Queue 分布式 of java.util.Deque 分布式 java.util.Map 分布式 java.util.concurrent.ConcurrentMap 通过TTL实现可重入 java.util.concurrent.locks.Lock 分布式 java.util.concurrent.atomic....
java.util.concurrent.atomic java.util.concurrent.locks java.util.jar java.util.logging java.util.prefs java.util.regex java.util.spi java.util.zip javax.accessibility javax.activation javax....
java.util.concurrent.atomic 类的小工具包,支持在单个变量上解除锁的线程安全编程。 java.util.concurrent.locks 为锁和等待条件提供一个框架的接口和类,它不同于内置同步和监视器。 java.util.jar 提供读写 ...
java.util.concurrent.atomic java.util.concurrent.locks java.util.jar java.util.logging java.util.prefs java.util.regex java.util.spi java.util.zip javax.accessibility javax.activation javax....
java.util.concurrent.atomic 类的小工具包,支持在单个变量上解除锁的线程安全编程。 java.util.concurrent.locks 为锁和等待条件提供一个框架的接口和类,它不同于内置同步和监视器。 java.util.jar 提供读写 JAR ...
java.util.concurrent.atomic 类的小工具包,支持在单个变量上解除锁的线程安全编程。 java.util.concurrent.locks 为锁和等待条件提供一个框架的接口和类,它不同于内置同步和监视器。 java.util.jar 提供读写 JAR ...
java.util.concurrent.atomic 类的小工具包,支持在单个变量上解除锁的线程安全编程。 java.util.concurrent.locks 为锁和等待条件提供一个框架的接口和类,它不同于内置同步和监视器。 java.util.jar 提供读写 JAR ...
java.util.concurrent.atomic 类的小工具包,支持在单个变量上解除锁的线程安全编程。 java.util.concurrent.locks 为锁和等待条件提供一个框架的接口和类,它不同于内置同步和监视器。 java.util.jar 提供读写 ...
java.util.concurrent.atomic 类的小工具包,支持在单个变量上解除锁的线程安全编程。 java.util.concurrent.locks 为锁和等待条件提供一个框架的接口和类,它不同于内置同步和监视器。 java.util.jar 提供读写 JAR...
25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................