1. 程式人生 > >java虛擬機器多執行緒安全的簡單理解

java虛擬機器多執行緒安全的簡單理解

java虛擬機器多執行緒安全及鎖優化

  1. 執行緒安全問題的產生
    多執行緒技術的引入產生啦執行緒安全性問題:當多個執行緒操作共享的資料時,如果A執行緒對共享的資料做出改變時B執行緒也要操作共享的資料,就有可能發生執行緒執行錯誤,產生錯誤的結果.
  2. 執行緒安全按安全程度來分五級
    不可變:不可變的物件一定是執行緒安全的;因為執行緒不能改變共享資料,每個執行緒相對其他所有物件都是獨立的,互相不會產生影響;所以不存在安全性問題.
    絕對執行緒安全:共享的資料每次只能讓一個執行緒操作,其他的執行緒等待;如synchronized關鍵字;
    相對執行緒安全:保證一個物件單獨操作是安全的;
    執行緒相容

    :物件本身不安全,通過呼叫端使用正確的手段保證物件在併發期間可以安全的使用.
    執行緒對立:無論呼叫端使用什麼方法,都無法在多執行緒中併發的使用程式碼

  3. 執行緒安全的實現方法
    互斥同步:在多執行緒併發訪問資料時同一時刻只能被一個執行緒使用;如synchronized關鍵字.效能低
    非阻塞同步:先進行操作,如果沒有其他執行緒爭搶共享資料,操作成功;否則再加補償.
    無同步:如果執行緒不涉及共享資料,不用同步措施保證其正確性