열심히 일하는 것의 의미는 앞으로는 당신이 좋아하는 사람과 것들만 보게 될 것이라는 것입니다!
이슈 및 Pull 요청을 환영합니다. 모든 문서는 제가 직접 코딩했습니다. 괜찮다고 생각하시면 별표 표시해 격려와 응원을 보내주세요 :)
전체 기사는 Java 동시성 에 관한 것입니다. 첫째, 그것은 내 자신의 관심사입니다. 둘째, 이 부분은 실제로 인터뷰 과정에서 자주 묻는 질문입니다. 그래서 학습과정에서 Java 동시성에 관련된 기본 지식을 기록했습니다. 먼저, 제가 알고 있는 지식에 대한 시스템을 구축할 수 있고, 다른 사람들에게도 도움이 되기를 바랍니다.
Java 동시성 주제 정보:
(1) 동시성에 대한 기본 지식이 포함되어 있으며 각 제목은 특정 기사로 연결됩니다.
(2) 가을 채용 면접 질문이 포함되어 있습니다. 이해하시면 도움이 될 것입니다. (그리고 모두가 원하는 직업을 찾을 수 있기를 바랍니다 :) )
(3) 읽는 과정에서 도움이 되셨다면 엄지손가락을 꾸욱 눌러주세요. 이는 저의 코딩 끈기에 힘이 됩니다.
참고: 재인쇄 시 원본 출처를 표기해 주세요. 감사합니다!
기본 지식
1.1 동시 프로그래밍의 장점과 단점
지식 포인트: (1) 동시성을 사용하는 이유는 무엇입니까? (장점) (2) 동시 프로그래밍의 단점 (3) 개념이 혼란스럽습니다.
1.2 스레드 상태 및 기본 동작
지식 포인트: (1) 새로운 스레드를 생성하는 방법, (2) 스레드 상태 변환, (4) 데몬 스레드;
동시성 이론(JMM)
Java 메모리 모델 및 사전 발생 규칙
지식 포인트: (1) JMM 메모리 구조, (2) 재정렬(3) 규칙 이전에 발생;
동시성 키워드
3.1 동기화를 완전히 이해하게 해주세요
지식 포인트: (1) 동기화 사용 방법, (2) 동기화 전 발생 관계, (4) 동기화된 메모리 의미, (6) 잠금 업그레이드 전략,
3.2 휘발성을 완전히 이해하자
지식 포인트: (1) 구현 원리; (2) 사전 발생 관계 도출 (3) 메모리 의미론;
3.3 Final을 정말 이해했다고 생각하시나요?
지식 포인트: (1) 사용 방법, (2) 최종 재정렬 규칙, (3) 최종 구현 원칙, (4) 최종 참조는 생성자에서 "오버플로"될 수 없습니다.
3.4 세 가지 주요 속성 요약: 원자성, 질서, 가시성
지식 포인트: (1) 원자성: 동기화됨 (2) 가시성: 동기화됨, 휘발성 (3) 질서성: 동기화됨, 휘발성
잠금 시스템
4.1 Lock 및 AQS(AbstractQueuedSynchronizer)에 대한 첫 소개
지식 포인트: (1) 잠금과 동기화 간의 비교, (3) AQS를 사용하여 사용자 정의 동기화 구성 요소를 구현하는 방법, (5) AQS에서 제공하는 템플릿 메서드,
4.2 AQS(AbstractQueuedSynchronizer)에 대한 심층적인 이해
지식 포인트: (1) AQS 동기화 대기열의 데이터 구조, (2) 배타적 잠금, (3) 공유 잠금,
4.3 ReentrantLock을 다시 이해하기
지식 포인트: (1) 재진입 잠금의 구현 원리 (2) 공정한 잠금의 구현 원리 (4) 공정한 잠금과 불공정 잠금의 비교
4.4 읽기-쓰기 잠금 ReentrantReadWriteLock에 대한 심층적인 이해
지식 포인트: (1) 읽기 및 쓰기 상태를 나타내는 방법, (2) WriteLock 획득 및 해제, (4) 잠금 저하 전략 생성, 애플리케이션 시나리오
4.5 조건의 대기 및 신호 대기/알림 메커니즘에 대한 자세한 설명
지식 포인트: (1) Object의 wait/notify 메커니즘과 비교한 특성, (3) 기본 데이터 구조, (5) Signal/signalAll 구현 원칙, 6) 대기 및 signal/signalAll의 조합;
4.6 잠금 지원 도구
지식 포인트: (1) 주요 기능 (2) 동기화 차단 웨이크업과 비교한 특성;
동시 컨테이너
5.1 동시 컨테이너 ConcurrentHashMap(JDK 버전 1.8)
지식 포인트: (1) 중요한 내부 클래스, (4) 실행 프로세스 넣기, (7) 확장 메커니즘; 8) 크기 계산 방법의 실행 과정 (9) 버전 1.8 ConcurrentHashMap과 이전 버전 간의 비교
5.2 동시 컨테이너의 CopyOnWriteArrayList
지식 포인트: (1) 구현 원리, (2) COW와 ReentrantReadWriteLock의 차이점, (3) 응용 프로그램 시나리오, (5) COW의 단점,
5.3 동시 컨테이너의 ConcurrentLinkedQueue
지식 포인트: (1) 구현 원리, (2) 데이터 구조, (4) HOPS 지연 업데이트의 설계 의도;
5.4 동시 컨테이너의 ThreadLocal
지식 포인트: (1) 구현 원칙, (2) 메소드 원칙 가져오기, (4) ThreadLocalMap 제거;
ThreadLocal 메모리 누수 문제를 소스 코드에서 심층적으로 설명하는 문서입니다.
지식 포인트: (1) ThreadLocal 메모리 누수 원리, (2) ThreadLocal 모범 사례, (3) 애플리케이션 시나리오
5.5 동시 컨테이너의 BlockingQueue
지식 포인트: (1) BlockingQueue의 기본 작업 (2) 일반적으로 사용되는 BlockingQueue;
동시 컨테이너의 ArrayBlockingQueue 및 LinkedBlockingQueue 구현 원칙에 대한 자세한 설명
스레드 풀(Executor 시스템)
6.1 스레드 풀 구현 원리
지식 포인트: (1) 스레드 풀을 사용하는 이유는 무엇입니까? (2) 실행 프로세스, (3) 생성자의 각 매개변수의 의미, (4) 스레드 풀을 닫는 방법, (5) 스레드 풀을 구성하는 방법,
6.2 스레드 풀의 ScheduledThreadPoolExecutor
지식 포인트: (1) 클래스 구조, (2) 일반 메소드, (3) ScheduledWorkQueue;
6.3 FutureTask 기본 동작 요약
지식 포인트: (1) FutureTask의 여러 상태, (3) 취소 메소드, (5) Runnable 인터페이스 구현;
원자 연산 클래스
7.1 Java의 원자 패키지에 있는 원자 연산 클래스 요약
지식 포인트: (1) 구현 원리, (2) 원자 업데이트 기본 유형, (4) 원자 업데이트 참조 유형,
동시성 도구
8.1 일반 영어로 작성된 Java 동시성 도구 클래스-CountDownLatch, CyclicBarrier
지식 포인트: (1) CountDownLatch, (2) CyclicBarrier, (3) CountDownLatch와 CyclicBarrier의 비교
8.2 현지 언어로 된 Java 동시성 도구 클래스 - 세마포어, 교환기
지식 포인트: (1) 리소스 액세스 제어 세마포어, (2) 데이터 교환 교환기;
동시성 연습
9.1 생산자-소비자 문제를 철저하게 이해할 수 있는 기사
JAVA 동시성 지식 그래프
새 창으로 이동하여 더 잘 보이도록 확대하거나 원본 이미지를 볼 수 있습니다.
지식 그래프의 원본 이미지에 대한 링크가 유용하다면 복제하여 활용하실 수 있습니다.