자바 동시 프로 그래 밍 테마(4)---간단 한 이야기(JUC)잠 금 자물쇠
3886 단어 JAVA병렬 프로 그래 밍juc락 자물쇠
1.왜 잠 금 이 필요 한가
synchronized 는 자바 언어 차원 의 키워드 입 니 다.Lock 은 JDK 5 의 J.U.C(java/util/current)패키지 에 나타 난 클래스 로 사용 시 synchronized 동기 화 된 코드 블록 은 JVM 에서 자동 으로 방출 됩 니 다.Lock 은 finally 블록 에서 프로그래머 가 손 으로 풀 어야 합 니 다.synchronized 는 비교적 오래된 실현 체제 로 디자인 이 빠 르 고 기능 적 인 제한 이 있 습 니 다.
잠 금 을 기다 리 고 있 는 스 레 드 를 중단 할 수 없습니다.
투표 로 자 물 쇠 를 채 울 수도 없고 기다 리 고 싶 지 않 으 면 자 물 쇠 를 채 울 수도 없다.
―동기 화 자물쇠 의 방출 은 자물쇠 가 있 는 스 택 프레임 과 같은 스 택 프레임 에서 만 가능 합 니 다.
또한 다 중 스 레 드 환경 에서 synchronized 를 사용 한 후 스 레 드 는 자 물 쇠 를 얻 거나 해당 하 는 코드 를 실행 하거나 자 물 쇠 를 얻 지 못 하고 대기 상태 에 있 으 며 자물쇠 에 대한 처리 가 원활 하지 않 습 니 다.한편,Lock 은 여러 가지 잠 금 기반 처리 체 제 를 제공 했다.예 를 들 어:
2.초기 잠 금
jdk 1.5 이후 가방 에 Lock 인터페이스(및 관련 실현 클래스)를 추가 하여 잠 금 기능 을 실현 합 니 다.사실은 Lock 인 터 페 이 스 를 진정 으로 실현 하 는 클래스 는 세 가지 입 니 다.ReentrantLock 과 ReentrantReadWriteLock 의 두 내부 클래스(ReadLock 과 WriteLock 은 Lock 의 인 터 페 이 스 를 실현 합 니 다)입 니 다.다음은 Lock 의 유형 도 를 살 펴 보 겠 습 니 다.
Lock lock = new ReentrantLock();
lock.lock();
try{
//
}catch(Exception ex){
}finally{
lock.unlock(); //
}
Lock 을 정상적으로 사용 하 는 용법 은 가장 많 습 니 다.ReentrantLock 은 Lock 의 실현 류 들 도 가장 많이 사용 합 니 다.Lock 을 사용 하면 자 물 쇠 를 자발적으로 풀 어야 하 며 이상 이 발생 했 을 때 자동 으로 자 물 쇠 를 풀 지 않 습 니 다.따라서 일반적으로 Lock 을 사용 하려 면 try{}catch{}블록 에서 진행 하고 finally 블록 에서 자 물 쇠 를 풀 어 잠 금 이 풀 리 지 않도록 해 야 합 니 다.② 우리 도 Lock 을 이렇게 사용 할 수 있다.
Lock lock = new ReentrantLock();
if(lock.tryLock()) {
try{
//
}catch(Exception ex){
}finally{
lock.unlock(); //
}
}else {
// ,
}
try Lock()방법 은 반환 값 이 있 습 니 다.자 물 쇠 를 가 져 오 려 고 시도 하 는 것 을 의미 합 니 다.성공 하면 true 로 돌아 갑 니 다.만약 에 자 물 쇠 를 가 져 오 는 데 실패 하면 false 로 돌아 갑 니 다.이 방법 은 어떻게 든 바로 돌아 갑 니 다.자 물 쇠 를 못 가 져 올 때 계속 기다 리 지 는 않 을 겁 니 다.이 절 에서 우 리 는 Lock 인 터 페 이 스 를 간단하게 알 아 보 자.Lock 자물쇠 의 내용 이 너무 많 기 때문에 상호 배척 자물쇠,공평 자물쇠,불공평 자물쇠,공유 자물쇠 와 관련 된 조건 체제,신 호 량 체제 등 을 포함한다.나 는 그들 을 조금씩 뜯 어 낼 것 이다.다음은 우리 의 중요 한 장면 이다.
이상 은 자바 병렬 프로 그래 밍 테마(4)-간단 한 이야기(JUC)Lock 자물쇠 의 상세 한 내용 입 니 다.JAVA(JUC)LOCK 자물쇠 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 하 세 요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 객체 작성 및 제거 방법정적 공장 방법 정적 공장 방법의 장점 를 반환할 수 있습니다. 정적 공장 방법의 단점 류 공유되거나 보호된 구조기를 포함하지 않으면 이불류화할 수 없음 여러 개의 구조기 파라미터를 만났을 때 구축기를 고려해야 한다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.