stop謹慎使用
假設有兩個執行緒a寫操作,b讀操作,共用同一把鎖,這時候寫入乙個user物件id和name都為當前時間,由於是共用同一把鎖,在進行寫操作的時候是無法讀的,但是可能出現這個一種情況,我初始化乙個user物件,id和name都為0,這時候我進行寫操作,剛把id更改為1,執行緒就被stop了,釋放了鎖、這時候,b執行緒就能讀到這條錯誤的資料,這中問題在平常開發過程中很不好排查,除非你特別確定可以用stop,否則不建議使用。
那麼,我們要是想正確的stop乙個執行緒的時候y應該怎麼做呢 ?我們可以自己在a執行緒裡面定義乙個stopme方法來控制a執行緒的寫操作。
併發程式設計學習 併發程式設計的挑戰
死鎖 資源限制的挑戰 併發程式設計的目的是為了讓程式執行的更快,但是並不是啟動更多的執行緒,就能讓程式最大限度的併發執行。在進行併發程式設計時,如果希望通過多執行緒執行任務讓程式執行的更快,會面臨非常多的挑戰,比如上下文切換的問題,死鎖的問題,以及受限於硬體和軟體的資源限制問題 即使是單核處理器也支...
併發程式設計學習筆記
併發程式設計第2章,基礎篇 2.1執行緒安全 1併發程式設計即是要控制對共享的可變的變數的訪問操作順序 2保證同步的方法,在語法 級別來說,可以使用synchronized,volatile,或者是現式的鎖,或者使用原子變數 3好的設計是避免執行緒危險的良方,使用oo的方法盡量避免執行緒的隱患。4執...
JAVA併發程式設計學習
併發程式設計主要目的是為了在相同的時間內讓程式執行得更快或者處理更多的任務。為了實現這一目的,併發程式設計會面臨很多的挑戰。併發程式設計必然會帶來多執行緒之間的問題,比如上下文之間的切換,執行緒死鎖,以及硬體資源的限制。無論是單核還是多核處理器都支援多執行緒。在單核處理器中,cpu會給每個執行緒分配...