마인드 맵 갤러리 자바 동시성
이는 Java 동시성에 대한 마인드 맵입니다. 주요 내용에는 잠금, 스레드 풀, 동시 컨테이너 및 기본 개념이 포함됩니다.
2024-04-22 19:41:17에 편집됨인적 자원 비용 통제는 기업이 경제적 이익을 극대화하는 중요한 수단입니다. 기업은 문제에 대처하기 위해 핵심 경쟁력을 지속적으로 향상시켜야 합니다.
이것은 교육 기술에 대한 지침이 아니라 교육 분위기를 찾는 여정입니다. 독자 여러분, 이 책에서는 각 교육 이야기를 통해 진정한 교육자가 어떤 사람이어야 하는지를 알 수 있습니다. 예민하고 재치 있고, 아이들에게 적절한 것과 부적절한 것이 무엇인지 알고, 무엇을 말해야 할지, 무엇을 말하지 말아야 할지, 주의를 기울이십시오. 아이의 독특함에 주목하고, 아이의 개인 생활 세계에 관심을 기울이고, 아이의 말을 "보고" "듣는" 방법을 알아야 합니다. 참된 교육자만이 아이들의 마음을 이해하고, 준교육의 분위기를 조성하며, 교육과 성장을 더욱 아름답고 보람있게 만들 수 있습니다!
이 책에서 저자는 세부 사항을 벗겨내고 대부분의 사람들이 지식과 기술을 배우는 데 적합한 일련의 학습 방법을 요약합니다. 저자에 따르면 모든 학습은 정밀 입력, 심층 소화, 다중 출력의 세 단계로 나눌 수 있습니다. 첫 번째는 지식의 입력으로, 먼저 새로운 지식을 받아들이고, 그 다음 지식을 소화하고, 입력된 지식을 이해하고, 마지막으로 학습된 지식을 사용하는 것을 의미합니다. 이 책이 학습할 때 혼란스럽거나 새로운 기술을 배우는 방법을 모르는 모든 사람에게 도움이 되기를 바랍니다!
인적 자원 비용 통제는 기업이 경제적 이익을 극대화하는 중요한 수단입니다. 기업은 문제에 대처하기 위해 핵심 경쟁력을 지속적으로 향상시켜야 합니다.
이것은 교육 기술에 대한 지침이 아니라 교육 분위기를 찾는 여정입니다. 독자 여러분, 이 책에서는 각 교육 이야기를 통해 진정한 교육자가 어떤 사람이어야 하는지를 알 수 있습니다. 예민하고 재치 있고, 아이들에게 적절한 것과 부적절한 것이 무엇인지 알고, 무엇을 말해야 할지, 무엇을 말하지 말아야 할지, 주의를 기울이십시오. 아이의 독특함에 주목하고, 아이의 개인 생활 세계에 관심을 기울이고, 아이의 말을 "보고" "듣는" 방법을 알아야 합니다. 참된 교육자만이 아이들의 마음을 이해하고, 준교육의 분위기를 조성하며, 교육과 성장을 더욱 아름답고 보람있게 만들 수 있습니다!
이 책에서 저자는 세부 사항을 벗겨내고 대부분의 사람들이 지식과 기술을 배우는 데 적합한 일련의 학습 방법을 요약합니다. 저자에 따르면 모든 학습은 정밀 입력, 심층 소화, 다중 출력의 세 단계로 나눌 수 있습니다. 첫 번째는 지식의 입력으로, 먼저 새로운 지식을 받아들이고, 그 다음 지식을 소화하고, 입력된 지식을 이해하고, 마지막으로 학습된 지식을 사용하는 것을 의미합니다. 이 책이 학습할 때 혼란스럽거나 새로운 기술을 배우는 방법을 모르는 모든 사람에게 도움이 되기를 바랍니다!
자바 동시성
기본 사상
프로세스
더미
방법 영역
힙과 메소드 영역은 모든 스레드가 공유하는 리소스입니다. 힙은 프로세스에서 가장 큰 메모리 조각이며 주로 새로 생성된 객체를 저장하는 데 사용됩니다(거의 모든 객체는 여기서 메모리를 할당합니다). 객체 클래스 정보, 상수, 정적 변수, JIT(Just-In-Time) 컴파일러로 컴파일된 코드 및 기타 데이터.
실
프로그램 카운터
가상 머신 스택
네이티브 메소드 스택
프로세스에는 여러 스레드가 있을 수 있으며 여러 스레드는 프로세스의 힙 및 메서드 영역(JDK1.8 이후 메타스페이스) 리소스를 공유하지만 각 스레드에는 자체 프로그램 카운터, 가상 머신 스택 및 로컬 메서드 스택이 있습니다.
경쟁 상대
평행한
메모리 누수, 교착 상태 및 스레드 불안정성을 쉽게 유발할 수 있습니다.
동기화
비동기식
스레드 안전성
스레드 생성
스레드 수명주기 및 상태
새로운
준비(실행 가능)
달리기
막힌
동기식 차단(차단됨)
차단 대기 중(WAITING)
타임아웃 대기 차단(TMME-WAITING)
사망(사망/종료됨)
스레드 컨텍스트 전환
스레드 교착 상태
교착상태에 필요한 4가지 조건
교착상태를 방지하는 방법
문제 해결 방법
그래픽: jconsole
jps -l 프로그램 프로세스 번호, jstack 프로세스 번호를 찾습니다.
JMM
정의
배경
CPU 및 캐시 일관성
프로세서 최적화
명령어의 병렬 재정렬
컴파일러 최적화 재배치
메모리 시스템 재배치
동시성 이론
마치 직렬 규칙
규칙 이전에 발생
프로그램 순서 규칙
잠금 규칙 모니터링
휘발성 변수 규칙
전이성 규칙
start() 규칙
Join() 규칙
세 가지 주요 특징
원자성
시계
온화
동시성 문제를 해결하는 방법
세 가지 주요 키워드
휘발성 물질
시계
원칙보다 먼저 일어난다
원칙
메모리 의미론 쓰기
메모리 의미 읽기
온화
메모리 의미론의 구현
동기화됨
효과
원자성
온화
시계
메모리 의미론 쓰기
메모리 의미 읽기
용법
인스턴스 메소드 장식
정적 메서드 수정
코드 블록 장식
원칙
동기화된 코드 블록
동기화 방법
자바 객체 모델
객체 헤더
마크 워드
클래스 포인트
인스턴스 데이터
바이트 정렬
잠금 업그레이드
자물쇠 없음
잠금 상태
바이어스 잠금
잠금 상태
업그레이드 시간
특정 작업
혜택
편향된 스레드 ID가 현재 스레드 ID와 일치하지 않습니다.
경쟁 성공
경쟁 실패
기술적 실현
경량 자물쇠
잠금 상태
업그레이드 시간
효과
회전
바이어스 잠금과 바이어스 잠금의 차이점
중량급 잠금장치
잠금 상태
업그레이드 시간
원칙
jdk1.6 최적화
스핀 잠금
적응형 스핀 잠금
잠금 제거
잠금 거칠기
바이어스 잠금
경량 자물쇠
결정적인
효과
규칙 재정렬
최종 필드에 대한 재정렬 규칙 작성
최종 필드 읽기 규칙 재정렬
메모리 장벽
동시 컨테이너
목록
CopyOnWriteArrayList
벡터
세트
CopyOnWriteArraySet
지도
동시해시맵
ConcurrentSkipListMap
해시테이블
대기줄
어레이블로킹큐
LinkedBlockingQueue
우선순위차단큐
동기 대기열
스레드 풀
정의
이점
자원 소비 감소
응답 속도 향상
스레드 관리성 향상
만드는 방법
집행자
고정스레드풀
단일 스레드 실행기
제한되지 않은 LinkedBlockingQueue가 사용될 수 있습니다. 작업 대기열의 최대 길이는 Integer.MAX_VALUE입니다. 이로 인해 많은 수의 요청이 누적되어 OOM이 발생할 수 있습니다.
캐시된ThreadPod
동기화 큐인 동기 큐(SynchronousQueue)가 사용되며, 생성이 허용되는 스레드 수는 Integer.MAX_VALUE이다.
예약된 스레드 풀
제한되지 않은 지연 차단 대기열 DelayedWorkQueue가 사용됩니다. 작업 대기열의 최대 길이는 Integer.MAX_VALUE이며, 이로 인해 많은 수의 요청이 누적되어 OOM이 발생할 수 있습니다.
ThreadPoolExecutor
공통 매개변수
코어풀크기
최대 풀 크기
작업 대기열
keepAlive시간
단위
스레드팩토리
매니저
중단 정책
발신자 실행 정책
정책 폐기
가장 오래된 정책 삭제
업무 처리 과정
스레드 풀의 크기를 설정하는 방법
이론적인 알고리즘
경험적 방법
CPU 집약적 작업(N 1)
I/O 집약적 작업(2N)
미래 수업
작업 취소
작업이 취소되었는지 확인
작업이 완료되었는지 확인
작업 실행 결과 가져오기
결점
완성 가능한 미래
미래의 단점을 해결하다
이점
완료단계
잠그다
기본 사상
비관적인 자물쇠
이점
비관적 잠금 비용은 고정되어 있습니다.
결점
치열한 잠금 경쟁으로 인해 스레드 차단이 발생할 수 있음
차단된 스레드 수가 많으면 시스템의 컨텍스트 전환이 발생합니다. 시스템 성능 오버헤드 증가
비관적 잠금은 교착 상태 문제를 일으킬 수도 있습니다.
적용 가능한 장면
다양한 시나리오 작성 및 치열한 경쟁(성능에 영향을 미치는 빈번한 실패 및 재시도 방지)
낙관적 잠금
이점
스레드 차단을 유발하는 잠금 경쟁이 없습니다.
교착상태 문제는 없을 것
결점
충돌이 자주 발생하면(쓰기가 많이 발생함) 실패와 재시도가 자주 발생합니다.
적용 가능한 장면
여러 읽기 시나리오, 경쟁 감소(성능에 영향을 미치는 빈번한 잠금을 방지할 수 있음)
실행 계획
버전 번호 메커니즘
CAS 알고리즘
ABA 질문
긴 사이클 시간과 높은 오버헤드
공유 변수에 대한 원자적 연산만 보장됩니다.
스레드로컬
효과
원칙
해시 알고리즘
해시 충돌
메모리 누수 문제
이유
해결책
AQS
주요 아이디어
상태
CLH 대기열
구조
원칙
이점
성능이 뛰어나고 잠금 획득 및 해제에 대한 오버헤드가 낮습니다.
공정한 자물쇠
구현이 간단하고 이해하기 쉽습니다.
강력한 확장성
결점
스핀 작업은 잠금이 오랫동안 유지되면 큰 CPU 오버헤드를 발생시킵니다.
단일 기능이며 복잡한 기능을 지원할 수 없습니다.
CLH 코호트 변종
AQS는 스핀 작업을 차단 스레드 작업으로 변경합니다.
데이터 구조 잠금 개선
각 노드의 상태 확장
신호
전파하다
상태
취소 된
명시적으로 이전 노드와 후속 노드를 유지 관리합니다.
Dequeue 노드를 명시적으로 null로 설정하는 등 보조 GC 최적화
개략도
공유 잠금
전용자물쇠
재진입 잠금
무엇인가요
원칙
불공정한 잠금 프로세스
스레드 1이 성공적으로 잠긴 경우
AQS 내부 데이터
스레드 2 잠금 실패
CLH 대기열 상황
스레드 3 잠금 실패
공정한 잠금 잠금 프로세스
잠금해제 과정
잠금을 해제하는 과정
대기열 데이터를 기다리는 중
최종 대기열 데이터
상태
구현원리
재진입 읽기쓰기 잠금
적용 가능한 장면
스레드가 읽기 잠금을 보유하고 있으면 쓰기 잠금을 계속 획득할 수 있습니까?
읽기 잠금을 쓰기 잠금으로 업그레이드할 수 없습니다.
신호기
두 가지 모드
공정한 모드
불공정한 모델
원칙
카운트다운래치
효과
원칙
일회용의
순환 장벽
원자 클래스
기본형
원자정수
AtomicLong
AtomicBoolean
배열 유형
원자정수배열
AtomicLongArray
원자 참조 배열
참조 유형
원자 참조
AtomicStamped참조
객체 속성 수정 유형
AtomicIntegerFieldUpdater
AtomicLongFieldUpdater
AtomicReferenceFieldUpdater