1. 程式人生 > >Java基礎中的 線程

Java基礎中的 線程

++ logs ext 繼承 參數傳遞 nbsp println join方法 stat

 創建線程的方式:

  1. 繼承Thread類

    (1)定義類,繼承Thread

    (2)復寫Thread類中的void run()方法(因為Thread類用於描述線程,該類就定義了一個功能,用於存儲線程要運行的代碼。該存儲功能就是run方法。)

    (3)調用線程的start方法,該方法能啟動線程,並能調用run方法

    註:對象.run()僅僅是對象調用方法。而線程創建了,並沒有運行;

      對象.start()開啟線程並執行該線程的run方法

  2. 實現Runnable接口

    (1)定義類,實現Runnable接口

    (2)覆蓋Runnable接口中的run方法。將線程要運行的代碼存放在該run方法中

    (3)通過Thread類建立線程對象

    (4)將Runnable接口的子類對象作為實際參數傳遞給Thread類的構造函數。因為,自定義的run方法所屬的對象是Runnable接口的子類對象,所以要讓線程去執行指定對象的run方法,就必須明確該run方法所屬的對象。

    (5)調用Thread類的start方法開啟線程,並調用Runnable接口子類的run方法

  實現方式與繼承方式的區別:

   實現方式好處:避免了單繼承的局限性。在定義線程時,建議使用實現方式。

   繼承Thread:線程代碼存放在Thread子類run方法中;實現Runnable:線程代碼存放在接口的子類的run方法。

繼承Thread類的例子

public class TestThread2 {
    public static void main(String[] args) {
        
        MyThread2 mt = new MyThread2();
        
        mt.start();
        
        for (int i = 0; i < 50; i++) {
            System.out.println("TestThread-----------" + i);
        }
    }
}

class MyThread2 extends Thread{
    
public void run() { for (int i = 0; i < 50; i++) { System.out.println("MyThread=========" + i); } } }

實現Runnable接口的例子:

public class TestThread {
    public static void main(String[] args) {
        
        MyThread mt = new MyThread();
        Thread t = new Thread(mt);
        t.start();
        // mt.run();
        for (int i = 0; i < 50; i++) {
            System.out.println("TestThread-----------" + i);
        }
    }
}

class MyThread implements Runnable {
    public void run() {
        for (int i = 0; i < 50; i++) {
            System.out.println("MyThread=========" + i);
        }
    }
    
}

3.線程的方法:

Join方法:線程對象.join(),當A線程執行到了B線程的.join()方法,A就會等待。等B線程都執行完,A才會執行。join可以用來臨時加入線程執行。

 yield方法:暫停當前正在執行的線程對象,並執行其他線程。

static Thread currentThread():獲取當前線程對象

 getName():獲取線程名稱

 設置線程名稱:setName()或者構造函數

Java基礎中的 線程