代码如下:


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 ,执行查看代码-,运行结果如下:

 




原子性保证 数据的正确性 。


本文转载:CSDN博客