[html]
<span style="color:#3366ff;">/*
實現Runnable接口 創建Thread類 共享一個數據 </span>
[html]
<span style="color:#3366ff;">編寫一個 火車站賣票程序--3個窗口同時賣票
</span><span style="color:#3366ff;">
*/
class PP implements Runnable{ //實現了一個Runnable接口的類PP
public int tickets=100; //共同擁有100張票
String str=new String("123"); //創建String對象 把局部名字傳進同步參數裡
public void run(){
while(true){ //當條件為真
synchronized(this.str){ //(同步的參數必須是一個對象的名字)
//當tt線程判斷條件為真,把str鎖上,執行內部的代碼,當內部代碼沒有執行完,CPU有可能會被其他線程搶去,但是當判斷同步有鎖
//它就會在外面等著,進不來,保證了只有一個線程在內部執行,直到tt把內部代碼執行完退出之後,會在次跟tt1在同一起跑線上搶占CPU的執行權
if(tickets>0){
System.out.println(Thread.currentThread().getName()+"賣出去的票數是:"+tickets);
tickets--;
}
else
{
break;
}
}
}
}
}
public class Threade_14 {
public static void main(String[] args) {
PP pp =new PP();
Thread tt1=new Thread(pp); //構造Thread對象 實現Runnable類PP
Thread tt2=new Thread(pp);
Thread tt3=new Thread(pp);
tt1.start(); //開啟線程
tt2.start();
tt3.start();
}
}</span>