實現多執行緒的兩種方式

2021-09-25 21:33:42 字數 1281 閱讀 2415

一、什麼是執行緒?

定義:執行緒是程序中的乙個執行單元,負責當前程序中程式的執行,乙個程序中至少有乙個執行緒。乙個程序中是可以有多個執行緒的,這個應用程式也可以稱之為多執行緒程式。

簡而言之:乙個程式執行後至少有乙個程序,乙個程序中可以包含多個執行緒

二、怎麼實現多執行緒?

下面的兩種方式婦孺皆知

1.繼承thread類

package com.hc.thread;

public

class

test1

extends

thread

}class

mythread

extends

thread

public

void

mytask()

}

2.實現runnable介面

package com.hc.thread;

public

class

test1

extends

thread

}class

myrunnable

implements

runnable

public

void

mytask()

}

三、執行緒的幾種狀態

1.新建狀態

當用new操作符建立乙個執行緒時。此時程式還沒有開始執行執行緒中的**。

2.就緒狀態

3.執行狀態

它才進入執行狀態,真正開始執行run()方法。

4.阻塞狀態

執行緒執行過程中,可能由於各種原因進入阻塞狀態:

①執行緒通過呼叫sleep方法進入睡眠狀態;

②執行緒呼叫乙個在i/o上被阻塞的操作,即該操作在輸入輸出操作完成之前不會返回到它的呼叫者;

③執行緒試圖得到乙個鎖,而該鎖正被其他執行緒持有;

④執行緒在等待某個觸發條件;

所謂阻塞狀態是正在執行的執行緒沒有執行結束,暫時讓出cpu,這時其他處於就緒狀態的執行緒就可以獲得cpu時間,進入執行狀態。

5.死亡狀態

有兩個原因會導致執行緒死亡:

①run方法正常退出而自然死亡;

②乙個未捕獲的異常終止了run方法而使執行緒猝死;

四、兩種實現方式的區別

1.thread類是runnable介面的子類,使用runnable介面實現多執行緒可以避免單繼承的侷限性。

2.runnable介面實現的多執行緒可以比thread類實現的多執行緒更加清楚的描述資料共享的概念

多執行緒兩種實現方式

public class testthread1 extends thread public static void main string args 執行結果如下 可見執行緒由cpu隨機排程的。public class testthread2 extends thread override pub...

實現多執行緒的兩種方式

1 runnable 是乙個介面,該介面中只包含了乙個run 方法。它的定義如下 public inte ce runnablerunnable的作用,實現多執行緒。我們可以定義乙個類a實現runnable介面 然後,通過new thread new a 等方式新建執行緒。2 thread 是乙個類...

實現多執行緒的兩種方式

1.建立類繼承thread類,重寫run public class mythread extends thread 2.測試public class test 1.建立類實現runnable介面,重寫run public class myrunnable implements runnable 2....