장 하나
여러 개념
- 동기화 : 귀국 후 후속 조치가있을 때까지 하나의 메소드 호출 기다려야합니다
- 비동기 : 다른 스레드의 실행 후 메소드 호출은 호출자는 반드시 다음 수행 할 수처럼를 반환하지 않을 수 있습니다
- 동시성 : 교대 매우 짧은 시간에 작업
- 병렬 : 작업을 동시에
- 임계 영역 : 공공 자원
- 방해 : 크리티컬 섹션 자원을 점유 이전 스레드의 석방을 기다려야합니다.
- 교착 상태 : 서로 필요한 자원을 점유, 우리는 진행할 수 없습니다
- 기아는 : 스레드 우선 순위는 항상 수, 리소스에 대한 액세스 너무 낮습니다
- 라이브 락 : 서로 활성 스레드 릴리스 자원을 서로, 그것은 불가능 모든 자원의 정상적인 실행을 얻을 만들기
동시성 수준 :
- 폐쇄성 : 중요한 지역 잠금, 잠금이 (비관적 잠금) 모든 자원 때까지 기다려야 중단되지 않습니다
- 아니 기아 : 공정 잠금 장치, 모든 메인 프로그램을 실행 할 수있는 기회를 갖게
- 접근성 : 우리는 충돌 롤백 (낙관적 잠금)에서 자원을 얻을 수있는 실행 한 후, 무제한 롤백을하지 않는 스레드를 초래할 수
- 아니 잠금 : 없음 잠금이 병렬로 액세스 할 수있는 차이는 제한된 단계에서 완전한 실행에 실이 있는지 확인하기 위해 바인딩
- 없음 대기 : 단계의 유한 수에 끝까지 모든 스레드를 필요로 (구현은 다음과 같습니다 통제되지 않은 읽기, 수정하지 않고 기록 중 복사에 반환을 기다리고 있습니다)
JMM (자바 메모리 모델) 설립 원칙 : 질서 자성, 가시성,
자성 : 불가분의 운영, 실행시는 방해하지
가시성 : 스레드가 공유 변수의 값을 변경, 다른 변수는 즉시 수정 여부를 알
주문 : (재 배열 명령에 의해 발생) 프로그램 순서 문제
장 II
1. 프로세스와 스레드
기본 작업을 스레드 (2)
- 새로운 스레드 : 스레드 상속 또는 Runable / 호출 가능, 재 작성 실행, 통화 시작을 구현합니다.
- 스레드를 종료 : 정지를 사용하지 않으려 () 메소드를
- 스레드 인터럽트 : 인터럽트 ()
- 대기 및 알림
대기 (), () synchronzied에 포함되어야 통지 ---- 문 () 임의 웨이크 스레드,가는 notifyAll () 모든 웨이크 업을 알립니다.
- 일시 중단 및 재개 실행 (방법을 포기)
- 나사 끝 기다립니다 (가입 ())과 겸손 (수율)
객체는 현재 개체가 threadB으로 isAlive ()의 종료 후 기다릴 때까지 threadA이 차단됩니다 기다리고 볼 threadB 출구가가는 notifyAll () 메소드의 통지 모든 대기 스레드를 호출 할 때 while 루프가 끝날 때 false를 반환 할 수 있습니다.
공공 정적 기본 무효 수율 ();이 구현 된 경우 정적 방법, 그것은 현재의 thread의 CPU는, 그러나, CPU의 나가하는 것은 현재의 thread의 대표하지 않습니다 더 이상 실행되고, 주목해야 할 것입니다 다음의 경우 경쟁은, 현재의 thread가 여전히 계속 작동 CPU 시간의 조각을 주어졌다.뿐만 아니라,에 할당 된 유일한 시간 슬라이스 내보내 동일한 우선 순위 스레드의 현재 스레드를 .
데이터에 대한 스레드 변경이 변화를 볼 수 있습니다 후 3. 유형 필드의 자주 변경의 경우, 다른 스레드을 보장하기 위해 휘발성 필드를 사용할 수 있습니다.
그룹 스레드 (4)
5. 데몬 작업자 스레드 실행 시스템 (데몬)
6. 스레드 우선 순위
7.synchronized 키워드
동시성 오류에서 :
ArrayList와 (가변 크기의 용기 액세스 예외 액세스, 액세스 저장할 때 내부 일관성의 파괴) 스레드 안전 ------ 벡터를 이용
HashMap의 : 안전하지 않은 스레드가 ------------------ 사용 ConcurrentHashMap의 (구조가 손상 될 수 있습니다 링 할 수없는 종료 발생)
난 자연 ++ : 난 Integer.valueOf (i.intValue () + 1) =], Integer.valueOf 복사 된 I에 대한 새로운 정수 객체 및 기준을 만드는 공장에있어서, 각각의 시간이고
내가 ++