>  기사  >  Java  >  Java 가상 머신--스레드 안전성 및 잠금 최적화

Java 가상 머신--스레드 안전성 및 잠금 최적화

伊谢尔伦
伊谢尔伦원래의
2016-11-26 09:26:161287검색

스레드 안전성

자바 언어의 스레드 안전성

 1 Immutable. 불변 객체는 스레드로부터 안전해야 합니다

2. 런타임 환경에 관계없이 클래스가 완전히 스레드로부터 안전하려면 호출자에게 추가 동기화 조치가 필요하지 않습니다. 이는 일반적으로 크거나 비현실적인 가격이 필요합니다. , Java API에서 스레드로부터 안전한 클래스로 표시되며 대부분은 스레드로부터 완전히 안전하지 않습니다.

 3 상대적 스레드 안전성

 4 스레드 호환 객체 자체는 스레드로부터 안전하지 않습니다. 안전하지만 전달될 수 있습니다. 동시 환경에서 객체가 안전하게 사용될 수 있도록 호출 측에서 동기화 방법을 올바르게 사용하십시오

 5 스레드 반대

스레드로부터 안전한 구현 방법

 1 상호 배제 동기화 상호 배제 및 동기화

 공통 동시성 정확성 보장 휴대폰, 동기화는 여러 스레드가 동시에 공유 데이터에 접근하는 것을 말하며, 공유 데이터를 저장하는 것은 동시에 하나의 스레드에서만 사용됩니다

 가장 기본적인 상호작용 제외 방식은 동기화 키워드입니다.

또한 java.util.concurrent 패키지의 잠금을 사용하여 동기화 ReentrantLock을 달성할 수도 있습니다.

JDK1.6은 동기화를 최적화했으며 효율성은 기본적으로 ReentrantLock과 동일합니다.

 2 비차단 동기화

 충돌 감지 기반의 낙관적 동시성 전략

 CAS 연산 비교 및 ​​교체

 3 동기화 방식 없음

잠금 최적화

1. 스핀 잠금 및 적응형 스핀

2. 잠금 제거

3. 잠금 조대화

4. 크기 잠금

5. 바이어스 잠금


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.