多執行緒的實現一般有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...