多執行緒-生產者消費者問題程式碼1

ZHOU_VIP發表於2017-06-03

package cn.itcast_03;

public class GetThread implements Runnable {
	
	private Student s;

	public GetThread(Student s) {
		this.s = s;
	}

	@Override
	public void run() {
		// Student s = new Student();
		System.out.println(s.name + "---" + s.age);
	}

}


package cn.itcast_03;

public class SetThread implements Runnable {

	private Student s;

	public SetThread(Student s) {
		this.s = s;
	}

	@Override
	public void run() {
		// Student s = new Student();
		s.name = "林青霞";
		s.age = 27;
	}

}


package cn.itcast_03;

public class Student {
	String name;
	int age;
}


package cn.itcast_03;

/*
 * 分析:
 * 		資源類:Student	
 * 		設定學生資料: SetThread(生產者)
 * 		獲取學生資料:GetThread(消費者)
 * 		測試類:StudentDemo
 * 
 * 問題1:按照思路寫程式碼,發現資料每次都是:null---0
 * 原因: 我們在每個執行緒中都建立了新的資源,而我們要求的時候設定和獲取執行緒的資源應該是同一個
 * 如何實現呢?
 * 		在外界把這個資料建立出來,通過構造方法傳遞給其他的類。
 * 
 */
public class StudentDemo {
	public static void main(String[] args) {
		//建立資源
		Student s = new Student();
		
		//設定和獲取的類
		SetThread st = new SetThread(s);
		GetThread gt = new GetThread(s);

		//執行緒類
		Thread t1 = new Thread(st);
		Thread t2 = new Thread(gt);

		//啟動執行緒
		t1.start();
		t2.start();
	}
}


相關文章