1. 程式人生 > >髒讀--- 事務資料訪問中的一個時間差

髒讀--- 事務資料訪問中的一個時間差

package com.java.preventIp;
public class DirtyRead {
private String username = "bjsxt";
	private String password = "123";
	
	public synchronized void setValue(String username,String password){
		this.username = username;
		try {
			Thread.sleep(2000);
		} catch (InterruptedException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
		}
		this.password = password;	
		System.out.println("setValue最終結果是:username = "+username+",password = "+password);
	}
	public void getvalue(){//如果這裡不加synchronize,便會造成髒讀的問題
		System.out.println("getvalue方法得到的是:username = "+this.username+",password = "+this.password);
	}
	
	public static void main(String[] args) throws InterruptedException {
		final DirtyRead dr = new DirtyRead();
		Thread t1 = new Thread(new Runnable() {
			@Override
			public void run() {
			dr.setValue("zd", "456");
			}
		});
		t1.start();
		Thread.sleep(1000);
		dr.getvalue();
	}
}