concurrent包简介 Atomic类
简单的说,这些类都是线程安全的,支持无阻塞无锁定的
Java代码
set()
get()
getAndSet()
getAndIncrement()
getAndDecrement()
getAndAdd()
等操作
下面是一个测试代码
可以看到,10个线程,每个线程运行了10,000次,理论上应该有100,000次增加,使用了普通的long是非线程安全的,而使用了AtomicLong是线程安全的;
注意,这个例子也说明,虽然long本身的单个设置是原子的,要么成功要么不成功,但是诸如count++这样的操作就不是线程安全的;因为这包括了读取和写入两步操作;