Java中的基礎 多執行緒的實現

2021-07-12 07:09:57 字數 1730 閱讀 9335

多執行緒的實現一般有3

種方法:

1)繼承thread

類,重寫

run()

方法:

thread本質上是實現

runnable

介面的乙個例項,代表乙個執行緒的例項,啟動執行緒

thread

的方法start()。

示例:

class mythread extends thread

}public class test

}

輸出結果:thread body

2)實現runnable

介面,並實現該介面的

run()

方法:

首先自定義類並實現runnable

介面,實現

run()

方法。然後建立

thread

物件,用實現

runnable

介面的物件作為引數例項化該

thread

物件。最後呼叫

thread

的run()

方法。

示例:

class mythread implements runnable

}public class test

}

輸出結果:thread body

3)實現callable

介面,重寫

call()方法

callable介面實際屬於

executor

框架中的功能類,

callable

介面與runnable

介面的功能類似,但提供了比

runnable

更強大的功能。

callable可以在任務結束後提供乙個返回值,

runnable

無法提供這個功能;

callable中的

call()

方法可以丟擲異常,而

runnable

的run()

方法不能丟擲異常;

執行callable

可以拿到乙個

future

物件,future

物件表示非同步計算的結果,它提供了檢查計算是否完成的方法。

示例:

public class callableandfuture 

}public static void main(string args)catch(exception e)

}}

輸出結果:wait thread body to finish

執行緒結束的返回值:mytest

三種方法進行比較:

1.由方法一和方法二的code body可知,不論是extends thread還是implements runnable介面來實現多執行緒,但最終還是通過thread的物件的api來控制線程的。

2.方法一和方法二這兩種執行緒執行完成後都沒有返回值,方法三則是帶返回值。當需要實現多執行緒時,一般推薦實現runnable介面的方法,其原因是:thread類定義了多種方法可以派生類使用或重寫,但是只有run()方法是必須被重寫的,在run()方法中實現這個執行緒的主要功能。當然是實現runnable介面所需的方法。

3.如果沒有必要重寫thread類中的其他方法,那麼通過繼承thread的實現方式與實現runnable介面的效果相同,在這個情況下最好通過實現runnable介面的方式來建立執行緒。

java中的多執行緒

package testthread 店員從生產者取貨,消費者從店員取貨,店員最多只能存放20個產品,當產品不夠20個需通知生產者生產,超過20個時停止消費 author passenger 店員類 class clerk catch interruptedexception e else 消費產品...

java中的多執行緒

建立執行緒的第一種方法 繼承thread類。步驟 1,定義乙個類繼承thread 2,複寫thread類中的run方法 目的 將自定義 儲存在run方法中,讓執行緒執行 3,呼叫執行緒的start方法,該方法用兩個作用 啟動執行緒,呼叫run方法 多執行緒的特性 隨機性 示例 class demo ...

java 中 的多執行緒

package wait 執行緒同步涉及的 同步控制 wait 使當前執行緒等待,不在爭搶cpu,並釋放同步 塊 或 同步方法的 鎖 notify 喚醒 某乙個 被 wait 的執行緒 notifyall 喚醒所有 被 wait 的執行緒 public class testwait implemen...