多线程访问,数据不同步

package com.freeflying.thread.base;
/**
 * @ClassName: DataShare  
 * @Description:多个线程访问一个变量,如果多个线程同时访问,造成数据脏读问题
 * @author freeflying
 * @date 2018年6月22日
 */
public class DataShareNotSync {
	public static void main(String[] args) {
		Thread5 thread1=new Thread5();
		Thread one=new Thread(thread1,"one");
		Thread two=new Thread(thread1,"two");
		Thread three=new Thread(thread1,"three");
		Thread four=new Thread(thread1,"four");
		Thread five=new Thread(thread1,"five");
		one.start();
		two.start();
		three.start();
		four.start();
		five.start();
	}
}
class Thread5 extends Thread{
	private int count=5;
	@Override
	public void run() {
		while(count > 0) {
			count--;
			System.out.println("this is "+this.currentThread().getName()+" calculate,count="+count);
		}
	}
}

结果:

this is one calculate,count=3
this is three calculate,count=2
this is three calculate,count=0
this is two calculate,count=2
this is one calculate,count=1

你可能感兴趣的:(java多线程)