자바 병발 모델 의 두 가지 자물쇠 지식 에 대한 상세 한 설명

1874 단어 자바병발 모형
1.비관 자물쇠
비관 적 인 자 물 쇠 는 최 악의 상황 을 가정 한다.
일반적으로 독점 자물쇠 등 을 실현 한다.
안전성 은 높 지만 중 저 병발 성 효율 은 낮다.
2.낙 관 자물쇠
낙관적 인 잠 금 은 충돌 검사 체 제 를 통 해 업데이트 과정 에서 다른 스 레 드 간섭 이 있 는 지 판단 한다.존재 하면 작업 이 실패 합 니 다.다시 시도 하지 않 아 도 됩 니 다.
CAS 등 흔 한 실현.
일부 낙관 자 물 쇠 는 일치 성 을 약화 시 켰 으 나 중 저 병발 성에 서 효율 이 크게 높 아 졌 다.
지식 포인트 확장:
병렬 및 분산 프로 그래 밍
주목 하 는 것 은 복잡 한 소프트웨어 시스템 의 구조 이 고'복잡'은 다 중 스 레 드,분포 식 과 GUI 프로그램 을 말한다.
자물쇠 와 동기 화 라 는 절 에서 스 레 드 안전 을 어떻게 설계 하 는 ADT 를 상세 하 게 소개 했다.
병발 하 다
우리 의 병발 소개 에서 우 리 는 두 가지 병발 프로 그래 밍 모델 을 보 았 다.공유 메모리 와 메시지 전달 이다.
•공유 메모리 모델 에서:병렬 모듈 은 메모리 에서 공유 가 변 대상 을 읽 고 기록 함으로써 상호작용 을 합 니 다.하나의 자바 프로 세 스 에서 여러 개의 스 레 드 를 만 드 는 것 은 우리 가 공유 하 는 메모리 병행 의 주요 예제 입 니 다.
•메시지 전달 모델 에서 동시 다발 모듈 은 통신 채널 을 통 해 서로 가 변 적 이지 않 은 메 시 지 를 보 내 상호작용 을 한다.이 통신 채널 은 웹 탐색,실시 간 메시지 등 과 같은 네트워크 를 통 해 서로 다른 컴퓨터 를 연결 할 수 있다.
자물쇠.
자물쇠 에 대해 이것 은 자바 언어 가 제공 하 는 내장 메커니즘 으로 모든 Object 가 관련 된 lock 입 니 다.
우선 자바 자물쇠 에 대한 개념 을 알 아 보 겠 습 니 다.
자바 의 내장 자물쇠:모든 자바 대상 은 동기 화 된 자 물 쇠 를 만 들 수 있 습 니 다.이 자 물 쇠 는 내장 자물쇠 가 됩 니 다.스 레 드 가 동기 코드 블록 이나 코드 방법 에 들 어 갈 때 자동 으로 이 자 물 쇠 를 얻 고 동기 코드 블록 이나 방법 을 종료 할 때 이 자 물 쇠 를 방출 합 니 다.내 장 된 자 물 쇠 를 얻 는 유일한 방법 은 이 자물쇠 의 보호 에 들 어 가 는 동기 코드 블록 이나 방법 이다.
자바 내 장 된 자 물 쇠 는 상호 배척 자물쇠 입 니 다.가장 많은 프로그램 이 이 자 물 쇠 를 얻 을 수 있 습 니 다.여러 스 레 드 가 특정한 mutable 형식의 ADT 작업 을 하려 고 할 때 그 값 을 수정 할 때 자 물 쇠 는 이 스 레 드 를 납치 하여 그들 을 막 을 수 있 습 니 다.이전 스 레 드 가 호출 을 끝 낼 때 만 이 자 물 쇠 를 풀 고 뒤의 스 레 드 가 이 자 물 쇠 를 얻 을 수 있 습 니 다.그렇지 않 으 면 계속 기다 릴 수 있 습 니 다.
사용법
동기 화 와 잠 금:다 중 스 레 드 가 같은 시간 에 가 변 데이터 에 대한 공유 작업 을 막 았 습 니 다.즉,프로그래머 가 다 중 스 레 드 간 에 mutable 데이터 에 대한 공유 작업 을 책임 집 니 다.'동기 화'전략 을 통 해 다 중 스 레 드 가 동시에 데 이 터 를 방문 하지 않도록 하고 잠 금 체 제 를 사용 하여 데이터 에 대한 독점 mutation 권 을 얻 습 니 다.다른 스 레 드 가 막 혀 서 방문 할 수 없습니다.즉,수정 할 수 없습니다.
자바 동기 잠 금 실현 방법
synchronized 키워드 수식
wait,notify,notify All 사용

좋은 웹페이지 즐겨찾기