자물쇠의 최적화
3762 단어 최적화
1. 자물쇠의 최적화된 사고방식과 방법
1、자물쇠 소지시간 감소
2. 자물쇠의 입도를 줄이고 (1) 큰 대상을 작은 대상으로 나누어 병행도를 크게 늘리고 자물쇠 경쟁을 낮춘다. (2) 편향 자물쇠를 낮추고 경량급 자물쇠 성공률을 높인다. (3) ConcurrentHashMap
(4) HashMap의 동기화 실현
Collections.synchronizedMap(Map<K,V> m)
SynchronizedMap
(5)ConcurrentHashMap
Segment:Segment<K,V>[]segments
Segment HashEntry<K,V>
pu , Segment, Segment, put
,ConcurrentHashMap
3. 자물쇠 분리(1) 기능에 따라 자물쇠 분리(2) ReadWriteLock(3) 읽기와 쓰기가 적은 경우 성능을 향상시킬 수 있다(4) 조작이 서로 영향을 주지 않으면 자물쇠를 분리할 수 있다(5) 링크드 블록킹Queue: 대기열, 체인 테이블
4. 자물쇠의 조화는 일반적인 상황에서 다중 노드 간의 효과적인 합병을 확보하기 위해 각 노드가 자물쇠를 가지고 있는 시간을 최대한 짧게 요구한다. 즉, 공공 자원을 사용한 후에 바로 자물쇠를 풀어야 한다.오직 이렇게 해야만 이 자물쇠에 있는 다른 라인을 기다려야만 오늘 아침에 자원 실행 임무를 얻을 수 있다.그러나 같은 자물쇠를 끊임없이 요청하고 동기화하며 방출하면 그 자체도 시스템의 귀중한 자원을 없애고 오히려 성능 최적화에 불리하다
5. 잠금이 실시간 컴파일러에서 제거될 때 공유할 수 없는 대상을 발견하면 이러한 대상의 잠금 조작을 제거할 수 있다
2. 가상 기기의 잠금 최적화
1. 대상 헤드 마크(1) 마크 워드, 대상 헤드 표시, 32비트(2) 설명 대상의hash, 잠금 정보, 스팸 회수 표시, 연령(3) 잠금 기록을 가리키는 지침, 모니터를 가리키는 지령, GC 표시, 편향 잠금 라인 ID
2. 편향 잠금(1) 대부분의 경우 경쟁이 없기 때문에 편향을 통해 성능을 향상시킬 수 있다. (2) 이른바 편향, 즉 잠금은 현재 잠금되어 있는 라인에 편향된다. (3) 대상 헤드 마크의 표시를 편향으로 설정하고 라인 ID를 대상 헤드 마크에 쓴다.(4) 경쟁 없이 편향 잠금된 라인을 얻으면 장래에 동기화 블록에 들어갈 수 있다. (5) 다른 라인이 같은 자물쇠를 요청할 때 동기화할 필요가 없다.편향 모드 종료(6) 경쟁이 치열한 상황에서 편향 자물쇠는 시스템의 부담을 증가시킨다
3. JDK8 동시 지원에 대한 새로운 지원
1. LongAdder(1)와 AtomicInteger의 유사한 사용 방식(2) AtomicInteger에서 핫이슈 분리(3) 방법
public void add(long x)
public void increment()
public void decrement()
public long sum()
public long longValue()
public int intValue()
2, Completable Future (1) 구현 CompletionStage 인터페이스 (2) 자바 8 대 Future 강화 버전 (3) 흐름 호출 지원
3. StampedLock의 실현 사상 (1) CLH 자전거 자물쇠 (2) 자물쇠는 대기 루트 대기열을 유지하고 모든 신청 자물쇠가 성공하지 못한 루트는 이 대기열에 기록된다.각 노드 (한 노드가 하나의 노드를 대표함), 표시 위치locked를 저장합니다. 현재 노드가 자물쇠를 풀었는지 판단하는 데 사용됩니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
깨끗한 것을 보고 싶기 때문에 최적화 함수의 벤치마크에 이용되는 함수의 가시화를 해 보았다결정되지 않음 (자기 만족) 「헤이 이런 거 있어」라고 생각하는 사람 최적화 함수란? 거친 이미지로 1) x + 10 = 25 2) x + 60 = 15 3) x + 45 = 60 의 x를 기계에 구할 때 정확하게 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.