最簡單的編寫基於執行緒的程式碼的方法之一:派生執行緒類(轉)

ba發表於2007-08-15
最簡單的編寫基於執行緒的程式碼的方法之一:派生執行緒類(轉)[@more@]派生執行緒類

最簡單的編寫基於執行緒的程式碼的方法之一,就是派生java.lang.Thread 類。該執行緒類是java.lang 包的一個成員,在預設情況下,執行緒類可以被所有的Java應用程式呼叫。為了使用執行緒類,我們需要了解The java.lang.Thread 類中定義的五個方法:

run():該方法用於執行緒的執行。你需要過載該方法,以便讓執行緒做特定的工作。

start():該方法使得執行緒啟動run()。

stop():該方法同start方法的作用相反,停止執行緒的執行。

suspend():該方法同stop方法不同的是,它並不終止未完成的執行緒,它僅僅掛起執行緒,以後還可恢復。

resume():該方法重新啟動已經掛起的執行緒。


執行List A中的程式,執行結果見List B



List A :擴充套件執行緒類



class TestThreads {

public static void main (String args []) {

class MyThread extends Thread {

String which;

MyThread (String which) {

this.which = which;

}

public void run() {

int iterations = (int)(Math.random()*100) %15;

int sleepinterval = (int)(Math.random()*1000);

System.out.println(which + " running for " + iterations +" iterations");

System.out.println(which + " sleeping for " + sleepinterval + "ms between loops");

for (int i = 0; < iterations; i++) {

System.out.println(which +" " + i);

try {

Thread.sleep(sleepinterval);

} catch (InterruptedException e) {}

}

}

}

MyThread a = new MyThread("Thread A");

MyThread b = new MyThread("Thread B");

MyThread c = new MyThread("Thread C");

a.start();

b.start();

c.start();

}

}



ListB: 清單A的輸出

Thread A running for 16 iterations



Thread C running for 15 iterations

Thread B running for 14 iterations

Thread A sleeping for 305ms between

loops

Thread C sleeping for 836ms between

loops

Thread B sleeping for 195ms between

loops

Thread A 0

Thread C 0

Thread B 0

. . .

Thread C 13

Thread B 13

Thread A 14

Thread C 14

Thread A 15

List A演示瞭如何從現有的Thread類中派生出一個新類。新建立的類過載了run 方法。有趣的是,實現run 方法不必很嚴格,因為Thread類提供一個預設的run方法,儘管它不是特別有用。
在有些場合,我們不能簡單地改變指定物件的父類。我們仍然需要採用執行緒。這時,我們就需要用到Runnable介面。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-958473/,如需轉載,請註明出處,否則將追究法律責任。

相關文章