線程 5. 自定義線程 implements Runnable

  • 自定義線程的創建方式:
    • 方式一:
      1. 自定義一個類繼承Thread.
      2. 子類重寫run方法,把自定義線程的任務定義在run方法上。
      3. 創建thread子類的對象,并且調用start方法開啟線程。
    • 方式二:
      1. 自定義一個類去實現Runnable接口。
      2. 實現了Runnable接口的run方法, 把自定義線程的任務定義在run方法上。
      3. 創建Runnable實現類的對象。
      4. 創建Thread對象,并且把Runnable實現類對象作為參數傳遞進去。
      5. 調用thread對象的start方法開啟線程。
  • 疑問1: Runnable實現類對象是線程對象嗎?
    • runnable實現類的對象并不是一個線程對象,只不過是實現了Runnable接口的對象而已。
  • 疑問2: 為什么要把Runnable實現類的對象作為參數傳遞給thread對象呢?作用是什么?
    • 作用: 是把Runnable實現類的對象的run方法作為了任務代碼去執行了。
  • 推薦使用: 推薦使用第二種。 因為java是單繼承的。
public class Demo3 implements Runnable{
    @Override
    public void run() {
        for(int i = 0 ; i< 100 ; i++){
            System.out.println(Thread.currentThread().getName()+":"+i);
        }
        System.out.println("當前線程對象:"+Thread.currentThread());  // 當前線程對象是: Thread
        System.out.println("當前對象:"+ this);   //this對象: Demo3的對象
    }

    public static void main(String[] args) {
        //創建Runnable實現類的對象
        Demo3 d = new Demo3();
        //創建Thread對象,并且把Runnable實現類對象作為參數傳遞進去
        Thread t = new Thread(d,"狗娃");
        //調用thead對象的start方法開啟線程。
        t.start();

        //主線程執行的。
        for(int i = 0 ; i< 100 ; i++){
            System.out.println(Thread.currentThread().getName()+":"+i);
        }
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,973評論 19 139
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,767評論 18 399
  • 本文主要講了java中多線程的使用方法、線程同步、線程數據傳遞、線程狀態及相應的一些線程函數用法、概述等。 首先講...
    李欣陽閱讀 2,503評論 1 15
  • 自從離開醫院進入金融行業以后就開始了漫漫學習理財之路,以前的我絕對是個標準的月光族,不管是實習期的一個月一千塊錢,...
    孝笑媽咪閱讀 218評論 7 0
  • 我想象,我更愛天馬行空,肆無忌憚的在自己的腦海里隨意刻畫,這便是自己在這個社會上的唯一自由。
    火之魘閱讀 103評論 0 0