1. 程式人生 > >建立執行緒的第二種方法:實現Runnable介面

建立執行緒的第二種方法:實現Runnable介面

package thread;

public class ThreadDemo3 {

 /**
  * @執行緒示例:
  * 需求:簡單的賣票程式。
  * 多個視窗賣票。
  *
  * 建立執行緒的第二種方式:實現Runnable介面
  *
  * 步驟:
  * 1,定義類實現Runnable介面
  *   //class Ticket implements Runnable
  *
  * 2,覆蓋Runnable介面中的run方法。
  *   將執行緒要執行的程式碼存放在該run方法總。
  *   //public void run(){}
  *
  * 3,通過Thread建立執行緒物件
  *   Ticket t = new Ticket();
  *
  * 4,將Runnable介面中的子類物件作為實際引數傳遞給Thread類的建構函式。
  *   Thread t1 = new Thread(t);
  *
  *   為什麼要將Runnable介面的子類物件傳遞給Thread的建構函式。
  *   因為,自定義的run方法所屬的物件是Runnbale介面的子類物件。
  *   所以要讓多執行緒去指定指定物件的run方法。
  * 5,呼叫Thread類的start方法開啟執行緒並呼叫Runable介面子類的run方法。
  *   t1.start();
  *
  * 建立執行緒的兩種方式:繼承方式和實現方式的區別
  * 1.實現方式好處:避免了單繼承的侷限性。
  *     在定義執行緒時,建議使用實現方式。
  * 2.繼承Thread:執行緒程式碼存放在Thread子類run方法中。
  *   實現Runnable:執行緒程式碼存放在介面子類的run方法中。
  *
  * 在此例中,總票數被獨立出來了。
  *
  *
  *
  */
 public static void main(String[] args) {
  /*繼承Thread的run方法的呼叫
  Ticket t1 = new Ticket();
  Ticket t2 = new Ticket();
  Ticket t3 = new Ticket();
  Ticket t4 = new Ticket();
  t1.start();
  t2.start();
  t3.start();
  t4.start();
  */
  
  //實現Runnable介面
  
  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();
  
  
 }

}

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--);
   }
  }
 }
}