Java 多執行緒實現多個視窗同時賣票
阿新 • • 發佈:2019-01-09
建立執行緒的第二種方式:實現Runable介面
步驟:
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方法中。
————摘自《畢向東25天》
步驟:
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(); */ } }
————摘自《畢向東25天》