[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>