代码如下:
package dxm.com.test;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class ThreadAtomic {
public static void main(String[] args) {
ExecutorService pool=Executors.newFixedThreadPool(2);
Lock lock=new ReentrantLock(false);
Runnable t1=new MyThreadAtomic("zhangsan", 10000,lock);
Runnable t2=new MyThreadAtomic("zhangsan1", 10000,lock);
Runnable t3=new MyThreadAtomic("zhangsan2", 10000,lock);
Runnable t4=new MyThreadAtomic("zhangsan3", 10000,lock);
Runnable t5=new MyThreadAtomic("zhangsan4", 10000,lock);
pool.execute(t1);
pool.execute(t2);
pool.execute(t3);
pool.execute(t4);
pool.execute(t5);
pool.shutdown();
}
}
class MyThreadAtomic implements Runnable{
private static AtomicLong along=new AtomicLong(10000);
private String name;
private int x;
private Lock lock;
MyThreadAtomic(String name,int x,Lock lock){
this.name=name;
this.x=x;
this.lock=lock;
}
@Override
public void run() {
lock.lock();
System.out.println(name+"执行了"+x+"当前余额是"+along.addAndGet(x));
lock.unlock();
}
}
去掉 lock ,执行查看代码-,运行结果如下:
原子性保证 数据的正确性 。