當前位置:成語大全網 - 書法字典 - Java多線程

Java多線程

要執行的指令還包括執行指令所需的系統資源,不同進程占用的系統資源是相對獨立的。所以進程是重量級的任務,它們之間的通信和轉換需要操作系統付出很大的開銷。

線程是進程中的壹個實體,是由系統獨立調度的基本單元。線程本身基本上不擁有系統資源,但它可以與屬於同壹進程的其他線程共享該進程擁有的所有資源。所以線程是輕量級的任務,它們之間的通信和轉換只需要較少的系統開銷。

Java支持多線程編程,所以用Java寫的應用程序可以同時執行多個任務。Java的多線程機制使用起來非常方便,用戶只需要關註程序細節的實現,不用擔心後臺的多任務系統。

在Java語言中,線程被表示為線程類。線程Thread類封裝了所有必要的線程操作控制。在設計程序時,需要明確區分線程對象和運行線程,線程對象可以看作是運行線程的控制板。在壹個線程對象中,有很多方法可以控制壹個線程是運行、休眠、掛起還是停止。線程類是控制線程行為的唯壹手段。壹旦Java程序啟動,就已經有壹個線程在運行了。您可以調用Thread.currentThread方法來查看當前正在運行哪個線程。

類ThreadTest{

公共靜態void main(String args[]){

thread t = thread . currentthread();

T.setName("單線程");//將線程命名為“單線程”

t . set priority(8);

//設置線程優先級為8,最高為10,最低為1,默認為5。

System.out.println("正在運行的線程:"+t);

//顯示線程信息

嘗試{

for(int I = 0;我& lt3;i++){

System.out.println("睡眠時間"+I);

thread . sleep(100);//睡眠100毫秒

}

} catch(中斷的異常e){//捕捉異常。

System.out.println("線程有錯");

}

}

}

多線程的實現方法

繼承線程類

可以通過繼承Thread類並在其中重寫run()方法來定義線程體實現線程的特定行為,然後創建這個子類的對象來創建線程。

重寫run()方法,在繼承Thread類的ThreadSubclassName子類中定義線程體。壹般格式是:

公共類ThreadSubclassName擴展Thread{

public ThreadSubclassName(){

.....//寫子類的構造方法,可以默認。

}

公共無效運行(){

.....//編寫自己的線程代碼

}

}

使用定義的線程子類ThreadSubclassName創建線程對象的壹般格式為:

thread subclass name ThreadObject =

new thread subclass name();

然後,您可以啟動由thread對象表示的線程:

thread object . start();//啟動線程

應用繼承線程的方法實現多線程程序。這個程序創建了三個獨立的線程,它們打印自己的“Hello World!”。

類ThreadDemo擴展線程{

私有字符串whoami

私有int延遲;

public ThreadDemo(String s,int d){

whoami = s;

延遲= d;

}

公共無效運行(){

嘗試{

睡眠(延遲);

}catch(中斷異常e)

System.out.println("Hello World!"+ whoami

+ " " +延時);

}

}

公共類多線程{

公共靜態void main(String args[]){

ThreadDemo t1,t2,T3;

t 1 = new thread demo(" thread 1 ",

(int)(math . random()* 2000));

t2 = new ThreadDemo("Thread2 ",

(int)(math . random()* 2000));

t3 = new ThreadDemo("Thread3 ",

(int)(math . random()* 2000));

t 1 . start();

T2 . start();

T3 . start();

}

}

實現可運行接口

編寫多線程程序的另壹種方法是實現Runnable接口。在壹個類中實現壹個Runnable接口(以下簡稱Runnable類),在這個類中定義壹個run()方法,然後用帶Runnable參數的線程類構造函數創建壹個線程。

創建線程對象可以通過以下兩個步驟完成:

(1)生成可運行類ClassName的對象。

class name runnable object = new class name();

(2)用帶Runnable參數的線程類構造方法創建壹個線程對象。指向新創建線程的指針將指向Runnable類的壹個實例。使用Runnable類的實例為線程提供run()方法-線程體。

Thread ThreadObject =新線程(runnable object);

然後,您可以啟動由ThreadObject threadobject表示的線程:

thread object . start();

在Thread類中用Runnable接口構造方法有:

公共線程(可運行目標);

公共線程(可運行目標,字符串名);

公共線程(字符串名);

公共線程(ThreadGroup組,Runnable目標);

公共線程(ThreadGroup組,可運行目標,

字符串名);

其中,參數Runnable target表示線程在執行時運行target的run()方法,String name構造指定名稱的線程,ThreadGroup group表示創建線程組。

具有可運行接口的多線程。

TwoThread類實現Runnable{

兩個線程(){

thread t 1 = thread . currentthread();

T1.setName("第壹個主線程");

System.out.println("運行線程:"+t 1);

線程t2 =新線程(這個,“第二線程”);

System.out.println("創建第二個線程");

T2 . start();

嘗試{

System.out.println("第壹個線程休眠");

thread . sleep(3000);

}catch(InterruptedException e){

System.out.println("第壹個線程出錯");

}

System.out.println("第壹線程退出");

}

公共無效運行(){

嘗試{

for(int I = 0;我& lt5;i++){

System.out.println("第二線程的睡眠時間:"

+I);

thread . sleep(1000);

}

}catch(InterruptedException e){

System.out.println("線程錯誤");

}

System.out.println("第二個線程退出");

}

公共靜態void main(String args[]){

new two thread();

}

}

程序運行結果如下:

運行線程:Thread[第壹個主線程,5,main]

創建第二個線程

第壹個線程休眠。

第二個線程的休眠時間:0

第二個線程的休眠時間:1

第二個線程的休眠時間:2

第壹個線程退出。

第二個線程的休眠時間:3

第二個線程的睡眠時間:4

第二個線程退出。

另外,虛擬機群上的產品團購超級便宜。