1. 程式人生 > 實用技巧 >關於解決 共享資源競爭

關於解決 共享資源競爭

>>> hot3.png

共享資源一般是以物件的形式存在的記憶體片段,但也可能是檔案,輸入\輸出埠,或者印表機。要控制對共享資源的訪問,的先把它包裝進一個物件。然後把所有要訪問這個資源的方法標記為synchronized。如果某個人物處於一個對標記為synchronized的方法的呼叫中,那麼在這個執行緒從該方法返回前,其他所有要呼叫類中任何標記為synchronized方法的執行緒都會被阻塞。

//中間這段為個人簡單總結:

一個共享物件中所有標記為synchronzied的方法共享一個鎖。一個執行緒可以多次獲取物件的鎖,比如:一個物件在同一個物件上的其他標記為synchronzied方法,後者又呼叫了同一個物件上的另一個方法。

注意:在使用併發時,將域設定為private是非常重要的,否則,synchronzied關鍵字就不能防止其他執行緒直接訪問域,這樣就會產生衝突。(現在終於有所體會,之前一直不明白為何要這麼做。)

//總結結束


什麼時候應該用同步呢? 可以使用Brian的同步規則:

如果你正在寫一個變數,它可能接下來將會被另一個執行緒讀取,或者正在讀取一個上一次已經被另一個執行緒寫過的變數,那麼你必須使用同步,並且,讀寫執行緒都必須用相同的監視器同步。

上原文(照片喳喳的):

011418_8Psa_1466553.jpg


認識能夠反應實踐,同時也能夠指導實踐,正確的認識能夠積極的推動實踐的發展。


















轉載於:https://my.oschina.net/demoXc/blog/324457