是否有多執行緒環境;
是否有共享資料;
是有存在多條語句操作這個共享資料;
當這三個條件同時存在的時候,猜可能發生多執行緒安全問題。
我用多執行緒中資料輸出重複問題來說明:
public
class
student
implements
runnable
catch
(interruptedexception e)
system.out.
println
(thread.
currentthread()
.getname()
+"-----"
+i--);
//**i-- 是對共享資料的操作(滿足條件3)**
}//解釋一下:因為每個執行緒是要獲得執行權,也就是獲得cup
//的時間片後才能被執行,假設它獲得了時間片後開始執行,但
//未執行完結果時間片(假設時間片為50ms)就用完了,那麼
//下乙個物件執行緒可能獲得了執行權。
//假設t1執行緒先進來了,假設此時i=5,執行緒走到了i--這
//塊,按照5輸出後,正準備進行i=i-1操作時,結果時間片用
//完了,所以t1失去了執行權,
}//就在這時,t2獲得執行權後進來了,此時i值還是5,所以數
//值5會出現兩次。}}
public
class
test
}
為什麼要用多執行緒
以前我認為多執行緒的作用就是提公升效能。實際上,多執行緒並不一定能提公升效能 甚至還會降低效能 多執行緒也不只是為了提公升效能。多執行緒主要有以下的應用場景 1 避免阻塞 非同步呼叫 單個執行緒中的程式,是順序執行的。如果前面的操作發生了阻塞,那麼就會影響到後面的操作。這時候可以採用多執行緒,我感覺...
為什麼要用多執行緒
1 避免阻塞 非同步呼叫 2 避免cpu空轉 需要處理的資訊提供得太慢,導致 cpu 效能沒有充分利用,這個時候多程序能充分利用 cpu 在io程式設計一節中,我們已經知道,cpu的速度遠遠快於磁碟 網路等io。在乙個執行緒中,cpu執行 的速度極快,然而,一旦遇到io操作,如讀寫檔案 傳送網路資料...
為什麼使用多執行緒
1 耗時的操作使用執行緒,提高應用程式響應 2 並行操作時使用執行緒,如c s架構的伺服器端併發執行緒響應使用者的請求。3 多cpu系統中,使用執行緒提高cpu利用率 4 改善程式結構。乙個既長又複雜的程序可以考慮分為多個執行緒,成為幾個獨立或半獨 立的執行部分,這樣的程式會利於理解和修改。使用多執...