java多线程线程---- 原子性
2015-08-03 16:05
441 查看
代码如下:
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 ,执行查看代码-,运行结果如下:
原子性保证 数据的正确性 。
相关文章推荐
- Struts——ognl表达式
- Java NIO系列教程(一) Java NIO 概述
- Spring注解详解
- javassist库小实例
- java正则表达式(字符串)
- Leetcode-199(Java) Binary Tree Right Side View
- ant+ivy,集成到eclipse中
- Leetcode-107(Java) Binary Tree Level Order Traversal II
- JAVA NIO 简介
- eclipse 按ctrl建只能显示一个方法的解决
- struts2令牌(token)内部原理
- java正则表达式
- JAVA设计模式之工厂模式 代码是原创
- 基于struts 的FormFile实现文件的上传功能
- Leetcode-102(Java) Binary Tree Level Order Traversal
- java动态代理详解
- 使用Struts2进行文件下载
- java设计模式
- 【JAVA】别特注意,POI中getLastRowNum() 和getLastCellNum()的区别
- [java_基础]内部类和静态类