最簡單的編寫基于線程的代碼的方法之一:派生線程類

發表于:2007-07-14來源:作者:點擊數: 標簽:
派生線程類 最簡單的編寫基于線程的代碼的方法之一,就是派生 java .lang.Thread 類。該線程類是java.lang 包的一個成員,在缺省情況下,線程類可以被所有的 Java 應用程序調用。為了使用線程類,我們需要了解The java.lang.Thread 類中定義的五個方法: run

派生線程類

最簡單的編寫基于線程的代碼的方法之一,就是派生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接口。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97