Java 多線程之 Thread 類 和 Runnable 介面初步使用

來源:互聯網
上載者:User

標籤:main   get   準備   cep   安排時間   inter   tst   this   多線程   

Thread 類

Thread 類是在 JDK1.0 時就存在的, 在 Java 中接觸的多線程開發基本上都會從這個類開始。

Thread之定義線程類

使用 Thread 建立線程的方法很簡單, Thread 是一個類, 在需要建立線程時, 我們只需要繼承這個類, 並將 run() 方法進行重寫即可。

class PrimeThread extends Thread {    long minPrime;    PrimeThread(long minPrime) {        this.minPrime = minPrime;    }    @Override    public void run() {        System.out.println(Thread.currentThread().getName()+" begin");        try {            Thread.sleep(500);            System.out.println(minPrime);        } catch (InterruptedException e) {            e.printStackTrace();        }        System.out.println(Thread.currentThread().getName()+" end");    }}

以上的 PrimeThread 類, 繼承了 Thread 類, 因此, 可以通過該類來實現開啟線程。

Thread之開啟線程

開啟線程的方法具體如下:

public static void main(String[] args) {    System.out.println("Thread begin:" + Thread.currentThread().getName());    PrimeThread primeThread = new PrimeThread(100L);    primeThread.start();    System.out.println("Thread end:" + Thread.currentThread().getName());}

調用時, new 出一個 PrimeThread 類的對象, 然後調用 start() 方法(注意不是調用 run() 方法)。最終得到的結果如下

建立一個簡單的多線程在 Java 裡面就是這麼簡單, 但因為 Java 是單繼承的 因此繼承 Thread 類是很不划算的一種做法。 而在 JDK1.0 , 提供了另一種方式可以對此進行彌補, 就是實現 Runnable 介面的方式。

Runnable 介面Runnable 之定義線程類

至此,使用 Runnable 介面的方式來建立多線程類的方式就是實現 Runnable, 然後重寫 run() 方法, 具體如下:

public class PrimeRun implements Runnable {    long minPrime;    PrimeRun(long minPrime) {        this.minPrime = minPrime;    }    public void run() {        System.out.println(Thread.currentThread().getName() + " Run begin");        try {            Thread.sleep(500);            System.out.println(minPrime);        } catch (InterruptedException e) {            e.printStackTrace();        }        System.out.println(Thread.currentThread().getName() + " Run end");    }}
Runnable 之開啟線程

大體上與繼承 Thread 類類似, 但我們可以不用繼承。 調用的話還是要通過 Thread 類的, 調用方式如下:

public static void main(String[] args) {    System.out.println(Thread.currentThread().getName()+" begin");    PrimeRun primeRun = new PrimeRun(100L);// new     new Thread(primeRun).start(); // 調用    System.out.println(Thread.currentThread().getName()+" end");}

運行結果如下

可以發現,其實該兩種實現多線程的方式在本質上都是一樣的。最終都通過 Thread 類中的 start() 方法來開啟線程, 該方法可以通知 「線程規劃器」本線程已經準備就緒, 系統就可以安排時間來調用 Thread 類中的 run() 方法。因此, 如果沒有分配優先順序, 線程執行的順序就是根據系統的調度演算法來執行, 是無序的。

以上是對 Java 最基本的開啟多線程的方法進行了介紹, 後面幾篇會更深入一下介紹一下幾個方法和原理。

Java 多線程之 Thread 類 和 Runnable 介面初步使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.