Thread 建立線程步驟:
通常建立一個線程的步驟如下。(1)建立一個新的線程類,繼承 Thread 類並覆蓋 Thread 類的 run()方法。class ThreadType extends Thread{ public void run(){ …… }}(2)建立一個線程類的對象,建立方法與一般對象的建立相同,使用關鍵字 new 完成。ThreadType tt = new ThreadType();(3)啟動新線程對象,調用 start()方法。tt.start();(4)線程自己調用 run()方法。void run();下面示範一個建立多個線程的例子。class ThreadDemo2 extends Thread{ //聲明無參數,空構造方法 ThreadDemo2(){} //聲明帶有字串參數的構造方法 ThreadDemo2(String szName) { super(szName);//調用父類的構造方法 } //重載 run 函數 public void run() { for (int count = 1,row = 1; row < 10; row++,count++) //迴圈計算輸出的*數目 { for (int i = 0; i < count; i++)//迴圈輸出指定的 count 數目的* { System.out.print('*');//輸出* } System.out.println();//輸出* } } public static void main(String argv[ ]){ ThreadDemo2 td1 = new ThreadDemo2(); //建立,並初始化 ThreadDemo2 類型對象 td1 ThreadDemo2 td2 = new ThreadDemo2(); //建立,並初始化 ThreadDemo2 類型對象 td2 ThreadDemo2 td3 = new ThreadDemo2(); //建立,並初始化 ThreadDemo2 類型對象 td3 td1.start();//啟動線程 td1 td2.start();//啟動線程 td2 td3.start();//啟動線程 td3 }}
Runnable 建立線程步驟:
通常實現 Runnable 線程的步驟如下。(1)建立一個實現 Runnable 介面的類,並且在這個類中重寫 run 方法。class ThreadType implements Runnable{ public void run(){ …… }}(2)使用關鍵字 new 建立一個 ThreadType 的執行個體。Runnable rb = new ThreadType ();(3)通過 Runnable 的執行個體建立一個線程對象,在建立線程對象時,調用的建構函式是new Thread(ThreadType),它用 ThreadType 中實現的 run()方法作為新線程對象的 run()方法。Thread td = new Thread(rb);(4)通過調用 ThreadType 對象的 start()方法啟動線程運行。td.start();下面是一個通過 Runnable 建立多線程的例子。//檔案:程式 10.5ThreadDemo4.java描述:產生三個新的線程class ThreadDemo4 implements Runnable{ //重載 run 函數 public void run() { for (int count = 1,row = 1; row < 10; row++,count++) //迴圈計算輸出的*數目 { for (int i = 0; i < count; i++)//迴圈輸出指定的 count 數目的* { System.out.print('*');//輸出* } System.out.println();//輸出分行符號 } } public static void main(String argv[ ]){ Runnable rb1 = new ThreadDemo4();//建立,並初始化 ThreadDemo4 對象 rb1 Runnable rb2 = new ThreadDemo4();//建立,並初始化 ThreadDemo4 對象 rb2 Runnable rb3 = new ThreadDemo4();//建立,並初始化 ThreadDemo4 對象 rb3 Thread td1 = new Thread(rb1);//建立線程對象 td1 Thread td2 = new Thread(rb2);//建立線程對象 td2 Thread td3 = new Thread(rb3);//建立線程對象 td3 td1.start();//啟動線程 td1 td2.start();//啟動線程 td2 td3.start();//啟動線程 td3 }}