1. 程式人生 > >線程創建的第二種方法

線程創建的第二種方法

private str 繼承 run方法 string pri light imp 今天

第一種方法是繼承並且重寫run方法(不推薦使用)

第二種就是有爹的情況,用實現接口的形式拓展功能——實現Runnable接口

Runnable中只有run()方法

今天復習同步線程代碼時候卡在一個問題上:

class SynThread implements Runnable
{
  run()
  {
    
  }
}

class Main
{
  public static void main(string [] args)
  {
    SynThread syn=new SynThread();
    Thread a=new Thread(syn);                      //問題:為啥要傳syn進去???
    a.start();
  }
}

  



 後來看了畢老師視頻後才明白。

解釋:

//Thread有一種Thread(Runnable a) 的初始化方法
class Thread implements Runnable
{
  private Runnable i;
  Thread(Runnable i)   //④
  {
    this i=i;
  }

  run()//Thread類實現的Runnable方法    //②
  {
    i.run();
  }

  strat()
  {
    run();     //①
  }
}

class SynThread implements Runnable
{
  run()     //③
  {
    syso("子類SubThread");
   }
}

class SubThread extend Thread
{
  run()   //⑤
  {
    syso("子類SubThread");
  }
}


class Main
{
  public static void main(...)
  {
    SubTread sub=new SubThread();
    sub.start(); //      由①-->③

    Thread th=new Thread();
    th.strat();   // 有①-->②   但是這時i無值,所以會報錯,可以在②裏加上判斷語句

     
    SynThread syn=new SynThread();
    Thread th=new Thread(syn);   //這裏直接進入④ 給i賦了值
    th.start();  //  ①-->②-->⑤

  } 
}

  

  

 

線程創建的第二種方法