일반적인 학습 1. 무엇 입 니까 집합 에 저장 대상 은 유형 전환 의 번 거 로 운 절 차 를 방지 하고 실행 할 때 ClassCastException 이 나타 나 지 않도록 합 니 다. 2. 어떻게 일 하 는 지 형식 지우 기, 컴 파일 러 는 컴 파일 할 때 모든 유형 과 관련 된 정 보 를 지 웠 기 때문에 실행 할 때 어떠한 유형 과 관련 된 정보 도 존재 하지 않 습 니 다. 3. 일반적인 사용
Fail - Fast, modCount 는 구조 변화 횟수 를 기록 하고 반복 적 으로 직렬 화 된 상황 에서 조작 전후의 modCount 를 비교 하고 바 뀌 면 던 집 니 다. Concurrent ModificationException
직렬 화 되 고 transient 수식 은 직렬 화 되 지 않 습 니 다.
Vector 구별:
vector 는 동기 화
두 배로 확대 한다.
대안
Collections.synchronizedList();
CopyOnWriteArrayList
많이 읽 고 적 게 쓴다.
메모리 사용량, 데이터 일치 하지 않 음
HashMap 링크 배열, 배열 의 모든 칸 은 링크 입 니 다. hash 충돌 이 발생 하면 충돌 을 링크 에 추가 합 니 다.
transient Entry[] table;
링크 유형의 배열
지퍼 법 으로 충돌 을 해결 하고 같은 링크 에 해시 값 과 산열 통 취 모 연산 결과 가 같은 Entry (남 은 숫자 제외)
를 저장 합 니 다. hash 충돌 을 해결 하 는 세 가지 방법:
1. ,
1. ;
2.
2.
1. , ,
3. hash ;
HashMap 분석
크기 는 기본적으로 16
입 니 다.
1.8 이후 Table 의 기본 크기 는 64 보다 작 지 않 고 링크 길이 가 8 일 때 빨간색 과 검은색 나무 로 바 뀌 었 습 니 다.플러그 인 사용 하지 않 기;
ConcurrentHashMap
segement 세그먼트, 기본 16, 안에 포 함 된 kv 수 를 기록 합 니 다.
size 작업 은 segement 에 포 함 된 kv 대수 만 통계 하면 됩 니 다.기본적으로 세 번 시도 하기;
병발 하 다 스 레 드 상태
새로 만 들 기,
실행 가능
차단
무한 대기
기한 내 대기: 차단, 수면;
사망
쓰다
Runnable 인터페이스 실현;
Callable 인 터 페 이 스 를 실현 합 니 다.
Thread 류 를 계승 합 니 다.start 재 작성 run () 방법의 스 레 드 시작
스 레 드 기초 메커니즘
Executor
주로 세 가지 Executor 가 있 습 니 다.
CachedThreadPool: 하나의 작업 이 스 레 드 를 만 듭 니 다.
Fixed ThreadPool: 모든 작업 은 고정 크기 의 스 레 드 만 사용 할 수 있 습 니 다.
Single ThreadExecutor: 크기 가 1 인 Fixed ThreadPool 에 해당 합 니 다.
Daemon 데 몬 스 레 드 는 프로그램 이 실 행 될 때 배경 에서 서 비 스 를 제공 하 는 스 레 드 입 니 다
Sleep 휴면 현재 스 레 드, interrupted Exception
을 던 질 수 있 습 니 다.
yield 는 같은 우선 순위 의 다른 스 레 드 운행 을 권장 합 니 다
인 터 럽 트 interrupt interepted 상호 배척 동기 화
synchronized
ReentrantLock
비교 하 다. 1. 자물쇠 의 실현 synchronized 는 JVM 이 이 루어 졌 고 ReentrantLock 은 JDK 가 이 루어 졌 다. 2. 성능 새 버 전의 자바 는 synchronized 에 대해 많은 최 적 화 를 진행 했다. 예 를 들 어 자 회전 자물쇠 등 이다. synchronized 는 ReentrantLock 과 대체적으로 같다. 3. 대기 중단 가능 자 물 쇠 를 가 진 스 레 드 가 오랫동안 자 물 쇠 를 풀 지 않 을 때 기다 리 고 있 는 스 레 드 는 기다 림 을 포기 하고 다른 일 을 처리 하 는 것 으로 바 꿀 수 있 습 니 다. ReentrantLock 은 중단 할 수 있 지만 synchronized 는 안 됩 니 다. 4. 공평 자물쇠 공정 자 물 쇠 는 여러 스 레 드 가 같은 자 물 쇠 를 기다 리 는 동안 자 물 쇠 를 신청 하 는 시간 순서에 따라 순서대로 자 물 쇠 를 받 아야 한 다 는 것 을 말한다. synchronized 의 자 물 쇠 는 불공평 합 니 다. ReentrantLock 은 기본적으로 불공평 하지만 공평 할 수도 있 습 니 다. 5. 여러 조건 잠 금 연결 하나의 ReentrantLock 은 여러 Condition 대상 을 동시에 연결 할 수 있 습 니 다. 동기 화 방안 없 음
스 택 폐쇄: 같은 방법의 부분 변 수 는 가상 스 택 에 위치 하고 스 레 드 개인 에 속 합 니 다.
스 레 드 로 컬 저장 (Thread Local Storage): 웹 응용 에서 ThreadLocal 은 스 레 드 로 컬 저장 기능 을 실현 합 니 다.
코드 를 다시 입력 할 수 있 습 니 다. 쌓 여 있 는 데이터 와 공용 시스템 자원 에 의존 하지 않 고 사용 하 는 상 태 량 은 모두 매개 변수 에서 들 어 오고 다시 들 어 갈 수 없 는 방법 을 사용 하지 않 습 니 다.
JUC AQS
Countdown Latch 는 카운터 cnt 를 유지 하고 있 습 니 다. countDown () 방법 을 호출 할 때마다 카운터 의 값 을 1 로 줄 이 고 0 으로 줄 일 때 await () 방법 을 호출 하여 기다 리 는 스 레 드 가 깨 어 납 니 다.
CyclicBarrier
Countdown Latch 와 비슷 합 니 다. 모두 계수 기 를 유지 함으로써 이 루어 집 니 다. 스 레 드 가 await () 방법 을 실행 한 후에 계수 기 는 1 을 줄 이 고 기 다 립 니 다. 카운터 가 0 이 될 때 까지 모든 await () 방법 을 호출 하여 기다 리 는 스 레 드 가 계속 실 행 될 수 있 습 니 다.
Semaphore
Semaphore 는 운영 체제 의 신 호 량 과 유사 하여 상호 배척 자원 에 대한 접근 루트 수 를 제어 할 수 있다.
FutureTask
BlockingQueue
FIFO 대기 열: LinkedBlockingQueue, ArrayBlockingQueue (고정 길이)
우선 순위 대기 열: Priority BlockingQueue
자물쇠 최적화
경량급 자물쇠
자전거 자물쇠
자물쇠 제거
자물쇠 굵기
편향 자물쇠
자바 메모리 모델 주 메모리 작업 메모리 캐 시 일치 성: 스 레 드 읽 기와 쓰기 향상 을 위해 고속 캐 시 를 추가 합 니 다. 메모리 간 상호작용 여덟 가지 조작
read: 하나의 변수의 값 을 주 메모리 에서 작업 메모리 로 전송 합 니 다
load: read 이후 에 실행 하고 read 에서 얻 은 값 을 작업 메모리 의 변수 복사 본 에 넣 습 니 다
use: 작업 메모리 의 변수 값 을 실행 엔진 에 전달 합 니 다
assign: 실행 엔진 에서 받 은 값 을 작업 메모리 에 부여 하 는 변수
store: 작업 메모리 의 변수 값 을 주 메모리 로 전송 합 니 다
write: store 이후 에 실 행 됩 니 다. store 에서 얻 은 값 을 메 인 메모리 변수 에 넣 습 니 다
lock: 메 인 메모리 에 작용 하 는 변수
unlock
메모리 3 대 특성
원자 성, 조작의 원자 성;
원자 류 AtomicInteger 등
synchronized
메모리 간 의 상호작용 은 lock 과 unlock 입 니 다.
가상 컴퓨터 구현 에 대응 하 는 바이트 코드 명령 은 Monitorenter 와 Monitorexit 이다.
가시 성
질서 성
volatile 메모리 장벽 추가 로 명령 재 촬영 금지
synchronized 는 매 시간 하나의 스 레 드 만 실행 되도록 보장 합 니 다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다: