有兩種實現方法,分別是繼承
thread
類與實現
runnable介面用
synchronized
關鍵字修飾同步方法
反對使用
stop()
,是因為它不安全。它會解除由執行緒獲取的所有鎖定,而且如果物件處於一種不連貫狀態,那麼其他執行緒能在那種狀態下檢查和修改它們。結果很難檢查出真正的問題所在。
suspend()
方法容易發生死鎖。呼叫
suspend()
的時候,目標執行緒會停下來,但卻仍然持有在這之前獲得的鎖定。此時,其他任何執行緒都不能訪問鎖定的資源,除非被"掛起
"的執行緒恢復執行。對任何執行緒來說,如果它們想恢復目標執行緒,同時又試圖使用任何乙個鎖定的資源,就會造成死鎖。所以不應該使用
suspend()
,而應在自己的
thread
類中置入乙個標誌,指出執行緒應該活動還是掛起。若標誌指出執行緒應該掛起,便用
wait()
命其進入等待狀態。若標誌指出執行緒應當恢復,則用乙個
notify()
重新啟動執行緒。
乙個程序可以建立多少執行緒
理論上,乙個程序可用虛擬空間是2g,預設情況下,執行緒的棧的大小是1mb,所以理論上最多只能建立2048個執行緒。如果要建立多於2048的話,必須修改編譯器的設定。include include includehandle hprocess handle hthread dword winapi a...
java 乙個執行緒控制另乙個執行緒
兩種方法,乙個用標記變數,另乙個用語法 不多說,直接 主方法一 send s new send s.start receive r new receive r.start class send extends thread s system.out.println s sleep 500 catch...
關於java執行緒的乙個問題
最近在寫乙個程式.其中就遇到了這樣乙個問題.我希望實現兩個或多個執行緒,而這些執行緒的順序是 thread thread 2,5,main a 這是執行緒2呼叫b時列印出的 thread thread 3,5,main a 這是執行緒3呼叫b時列印出的 上面的順序是我所希望的.但往往會是這樣的結果 ...