Java Runnable 用法

Java 提供了兩種執行緒方式:
第一種是繼承 java.lang package 下的 Thread 類別,覆寫 Thread 類別的 run() 方法,在 run() 中實作執行緒的程式碼。
第二種是實作 Runnable 介面建立多執行緒。
下面就介紹一下這兩種方式,先看基本的執行緒程式範例,

public class example {
    public static void main(String[] args) {
        MyThread myThread = new MyThread(); // 建立 myThread 物件
        myThread.run();
        while (true) {
            System.out.println("Main");
        }
    }
}

class MyThread {
    public void run() {
        while (true) {
            System.out.println("MyThread run()");
        }
    }
}

會發現結果是單執行緒。

繼承 Thread 類別建立多執行緒

把以上程式碼進行簡單修改,差別在於上例子用的是 MyThread.run(),這邊使用的是 MyThread.start() 且 MyThread 繼承 Thread 類別,

public class example {
    public static void main(String[] args) {
        MyThread myThread = new MyThread(); // 建立執行緒 myThread 的執行緒物件
        myThread.start(); // 開啟執行緒
        while (true) {
            System.out.println("Main");
        }
    }
}

class MyThread extends Thread {
    public void run() {
        while (true) {
            System.out.println("MyThread run()");
        }
    }
}

實作 Runnable 介面建立多執行緒

因為繼承 Thread 類別實現多執行緒有一定的侷限性,所以有了 Runnable,使用方法為實作 Runnable 介面 (實作 run 函式),之後在傳給 Thread 建構子即可。

public class example {
    public static void main(String[] args) {
        MyRunnable myRunnable = new MyRunnable(); // 建立執行緒 myRunnable 的執行緒物件
        Thread thread = new Thread(myRunnable); // 建立執行緒物件
        thread.start(); // 開啟執行緒,執行 Thread 中的 run()
        while (true) {
            System.out.println("Main");
        }
    }
}

class MyRunnable implements Runnable {
    public void run() {
        while (true) {
            System.out.println("MyRunnable run()");
        }
    }
}

參考
java中runnable的用法解析
他直接介紹 runnable 用法
java之多執行緒中Thread類和Runnable介面使用方法
寫得不錯,有循序性,他先說 Thread 怎麼用,再說 Runnable 跟 Thread 的差異。

留言

這個網誌中的熱門文章

4個免費線上筆記本

Android取经之路系列文章

[Chrome 外掛] Redirect Path 查看重定向的所有過程