Runnable方式實現執行緒可以共享資源的原因

2021-08-30 14:32:27 字數 642 閱讀 8423

執行緒的兩種實現方式,通過實現runnable介面的執行緒方式可以實現資源的共享,而繼承thread則不可以,原因何在?先看下面兩段**:

通過thread實現執行緒:

//使用thread實現執行緒不能實現資源共享 class mythread extends thread public void run() } } } public class threaddemo02 }

通過runnable實現:

//使用runnable實現執行緒可以實現資源共享 class mythread implements runnable public void run() } } } public class runnabledemo02 }

解釋:因為乙個執行緒只能啟動一次,通過thread實現執行緒時,執行緒和執行緒所要執行的任務是**在一起的。也就使得乙個任務只能啟動乙個執行緒,不同的執行緒執行的任務是不相同的,所以沒有必要,也不能讓兩個執行緒共享彼此任務中的資源。

乙個任務可以啟動多個執行緒,通過runnable方式實現的執行緒,實際是開闢乙個執行緒,將任務傳遞進去,由此執行緒執行。可以例項化多個 thread物件,將同一任務傳遞進去,也就是乙個任務可以啟動多個執行緒來執行它。這些執行緒執行的是同乙個任務,所以他們的資源是共享。

兩種不同的執行緒實現方式本身就決定了其是否能進行資源共享。

建立多執行緒的方式二 實現Runnable介面

package com.day0205 3 建立多執行緒的方式二 實現runnable介面 1.建立乙個實現了runnable介面的類 2.實現類去實現runnable介面中的抽象方法 run 3.建立實現類的物件 4.將此物件作為引數傳遞到thread類的構造器中,建立thread類的物件 5.通...

執行緒Thread與Runnable實現

當new 乙個thread的時候,就是在主線程的基礎上再開乙個子執行緒,cpu一會兒給主線程用,一會兒給子執行緒用,所以多執行緒會降低工作效率 1 thread 自己實現自己的run方法 public static voidmain string args throwsinterruptedexce...

多執行緒 建立執行緒 實現Runnable介面

class twindow implements runnable class ticket 該 執行後,沒有結果。因為雖然四個執行緒已經開始執行,但是它們呼叫的是thread類中的run 而該run 並沒有任何內容。問題來了,twindow中的run 方法為賣票動作,要如何呼叫它呢。需求 簡單的買...