您的位置:首页 > 编程语言 > Java开发

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



原子性保证 数据的正确性 。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: