3일차 ReentrantLock

1345 단어
Reentrant Lock 다시 잠금, Lock의 구체적 실현
public class ReentrantLock implements Lock, java.io.Serializable 

Lock은 표시 잠금이고 synchronized는 내부 잠금입니다.
  • Lock은 보다 세분화된 잠금 제어 지원
  • Lock은 무차단 잠금,synchronized는 차단 잠금
  • Lock은 공평한 잠금을 실현할 수 있고synchronized는 비공평한 잠금만 가능
  • Lock은 코드급, synchronized는 JVM급
  •  /**
     * Linked list node class
     *       ,         
     */
    static class Node {
        E item;
    
        /**
         * One of:
         * - the real successor Node
         * - this Node, meaning the successor is head.next
         * - null, meaning there is no successor (this is the last node)
         */
        Node next;
    
        Node(E x) { item = x; }
    }
    
    /** Current number of elements
     *     ,      ,        
     * */
    private final AtomicInteger count = new AtomicInteger();
    
    /** Lock held by take, poll, etc */
    private final ReentrantLock takeLock = new ReentrantLock();
    
    /** Wait queue for waiting takes */
    private final Condition notEmpty = takeLock.newCondition();
    
    /** Lock held by put, offer, etc */
    private final ReentrantLock putLock = new ReentrantLock();
    
    /** Wait queue for waiting puts */
    private final Condition notFull = putLock.newCondition();
    

    자물쇠를 다시 넣는 방식으로 읽기와 쓰기의 분리 자물쇠를 실현한다.그리고 condition을 사용하여 특정 조건을 충족시킬 때 라인 Block을 보장합니다.

    좋은 웹페이지 즐겨찾기