資安

奈學:reaseShared共享式釋放鎖

共享鎖的釋放是通過調用releaseShared模版方法來實現的。大概步驟為:
調用tryReleaseShared嘗試釋放共享鎖,這裡必須實現為線程安全。
如果釋放了鎖,那麼調用doReleaseShared方法環迅後繼結點,實現喚醒的傳播。
對於支持共享式的同步組件(即多個線程同時訪問),它們和獨佔式的主要區別就是tryReleaseShared方法必須確保鎖的釋放是線程安全的(因為既然是多個線程能夠訪問,那麼釋放的時候也會是多個線程的,就需要保證釋放時候的線程安全)。由於tryReleaseShared方法也是我們自己實現的,因此需要我們自己實現線程安全,所以常常採用CAS的方式來釋放同步狀態。
/**

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

public final boolean releaseShared(int arg) {

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

}

本文來源於:奈學開發者社區,如有侵權,請聯繫我刪除~

Leave a Reply

Your email address will not be published. Required fields are marked *