多執行緒——建立執行緒方法之二(實現Runnable介面)
阿新 • • 發佈:2019-02-09
/* 需求:簡單的賣票程式。 多個視窗同時買票。 建立執行緒的第二種方式:實現Runnable介面 步驟: 1,定義類實現Runnable介面 2,覆蓋Runnable介面中的run方法。 將執行緒要執行的程式碼存放在該run方法中。 3,通過Thread類建立執行緒物件。 4,將Runnable介面的子類物件作為實際引數傳遞給Thread類的建構函式。 為什麼要將Runnable介面的子類物件傳遞給Thread的建構函式。 因為,自定義的run方法所屬的物件是Runnable介面的子類物件。 所以要讓執行緒去指定指定物件的run方法。就必須明確該run方法所屬物件。 5,呼叫Thread類的start方法開啟執行緒並呼叫Runnable介面子類的run方法。 實現方式和繼承方式有什麼區別呢? 實現方式好處:避免了單繼承的侷限性。 在定義執行緒時,建議使用實現方式。 兩種方式區別: 繼承Thread:執行緒程式碼存放Thread子類run方法中。 實現Runnable,執行緒程式碼存在介面的子類的run方法。 */ class Ticket implements Runnable//extends Thread { private int tick = 100; public void run() { while(true) { if(tick>0) { System.out.println(Thread.currentThread().getName()+"....sale : "+ tick--); } } } } class TicketDemo { public static void main(String[] args) { Ticket t = new Ticket(); Thread t1 = new Thread(t);//建立了一個執行緒; Thread t2 = new Thread(t);//建立了一個執行緒; Thread t3 = new Thread(t);//建立了一個執行緒; Thread t4 = new Thread(t);//建立了一個執行緒; t1.start(); t2.start(); t3.start(); t4.start(); /* Ticket t1 = new Ticket(); //Ticket t2 = new Ticket(); //Ticket t3 = new Ticket(); //Ticket t4 = new Ticket(); t1.start(); t1.start(); t1.start(); t1.start(); */ } }