天天看點

奈學:reaseShared共享式釋放鎖

共享鎖的釋放是通過調用releaseShared模版方法來實作的。大概步驟為:

調用tryReleaseShared嘗試釋放共享鎖,這裡必須實作為線程安全。

如果釋放了鎖,那麼調用doReleaseShared方法環迅後繼結點,實作喚醒的傳播。

對于支援共享式的同步元件(即多個線程同時通路),它們和獨占式的主要差別就是tryReleaseShared方法必須確定鎖的釋放是線程安全的(因為既然是多個線程能夠通路,那麼釋放的時候也會是多個線程的,就需要保證釋放時候的線程安全)。由于tryReleaseShared方法也是我們自己實作的,是以需要我們自己實作線程安全,是以常常采用CAS的方式來釋放同步狀态。

/**

  • 共享模式下釋放鎖的模版方法。
  • ,如果成功釋放則會調用

    */

public final boolean releaseShared(int arg) {

//tryReleaseShared釋放指鎖
if (tryReleaseShared(arg)) {
    //釋放成功,必定調用doReleaseShared嘗試喚醒後繼結點
    doReleaseShared(); 
    return true;
}
return false;           

}

本文來源于:奈學開發者社群,如有侵權,請聯系我删除~

繼續閱讀