> Java > Java베이스 > Netty에서 Java 잠금 사용 방법 알아보기

Netty에서 Java 잠금 사용 방법 알아보기

coldplay.xixi
풀어 주다: 2021-01-04 10:04:24
앞으로
2235명이 탐색했습니다.

java 기본 튜토리얼 칼럼에서는 Netty

Netty에서 Java 잠금 사용 방법 알아보기

권장(무료): java 기본 튜토리얼

1 잠금 개체 및 범위

  • 세분성 줄이기

2 잠금 개체 자체의 크기

  • 공간 사용량 줄이기

    Atomic long V.S long
    전자는 해시 코드를 저장하는 개체 헤더, 잠금 개체 및 잠금 개체를 포함하는 개체입니다. 기타 정보 64비트 시스템에서는 16바이트를 차지합니다.
  • 휘발성 긴= 8바이트
  • AtomicLong = 8바이트(휘발성 긴) + 16바이트(객체 헤더) + 8바이트(참조) = 32바이트
    최소 24바이트를 절약하세요!

So Atomic* 객체 => 휘발성 기본 유형 + Static Atomic*FieldUpdater

3 잠금 속도

동시성 향상

LongCounter

과 같은 기능에 사용됩니다. 메모리 할당 바이트 수를 기록합니다.
높은 동시성에서: java.util.concurrent.atomic.AtomicLong => java.util.concurrent.atomic.LongAdder

결론: 적시에 최신 JDK 기능을 측정하고 사용하세요

다음에 따라 다른 기능을 선택하세요. 다양한 상황 동시 패키지 구현

JDK< 1.8 ConcurrentHashMapV8(jDK8의 ConcurrentHashMap 버전) 고려

4 다양한 시나리오에 따라 다양한 동시성 클래스 선택

필요에 따라 변경

  • 종료 이벤트를 기다립니다. executor(이벤트 실행자):
    Object.wait/notify => CountDownLatch

  • Nio 이벤트 루프는 작업 대기열 저장을 담당합니다.
    Jdk의 LinkedBlockingQueue(MPMC, 다중 생산자 및 다중 소비자) ->
    io .netty.util.internal.PlatformDependent.Mpsc#newMpscQueue(int):

    5 잠금의 값

    사용할 수 없으면 사용하지 마세요
    네티 응용 시나리오: 부분 직렬 + 전체 병렬> - 대기열 + 다중 스레드 모드:
    사용자 개발 난이도 감소, 간단한 논리, 처리 성능 향상
    잠금으로 인한 컨텍스트 전환 및 동시성 보호와 같은 추가 오버헤드 방지

    잠금 사용 방지: ThreadLocal 사용 리소스 경합을 피하기 위해 예를 들어 Netty의 경량 스레드 풀 구현

    위 내용은 Netty에서 Java 잠금 사용 방법 알아보기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿