멀티 스레드 주위 JMM 주요 기술 포인트가 공전 자성, 가시성 및 질서 빌드.
(1) 자성 (자성)
자성은 작업이 중단되지 않습니다에 의미합니다. 여러 스레드로 실행되는 경우에도, 시작 행동하면, 다른 스레드의 방해되지 않습니다.
예를 들어, I INT 정적 글로벌 변수에 대한 값을 할당 개의 스레드, 스레드 A는 스레드 B의 값을 할당 한 값을 할당 -1. 그래서 관계없이 방식의있는이 두 스레드, i 값은 1 또는 작업의 어떤 속도 -1입니다. 스레드 A 및 스레드 B 간의 간섭하지 않고있다. 이 자성의 기능입니다, 그것은 중단 할 수 없습니다.
우리가 INT 데이터 형식 및 길이의를 사용하여 데이터 형식을 사용하지 않는 경우에, 당신은 정말 운이되지 않을 수 있습니다. 32 비트 시스템의 경우, 기록 데이터 길이 (64 비트 길이 등의 데이터) 원자 타입이다. 롱 타입의 기록 (또는 판독)의 두 개의 스레드, 스레드들 사이의 간섭 결과 인 경우 즉,이다.
2 시야 (가시성)
스레드가 공유하는 변수의 값을 수정할 때 가시성 수단은 다른 스레드는 즉시 수정 여부를 알 수있다. 물론, 시리얼 프로그램, 문제의 가시성가 존재하지 않습니다. 당신이 단계 중 어느 하나의 변수를 수정하기 때문에,이 변수의 값이 다음 단계에서 읽기, 읽기는 새로운 수정 된 값이어야합니다.
3 질서 (주문)
문제를 주문하는 것은 가장 단단한가에서 세 가지 질문을 이해할 수 있습니다. 코드 실행의 스레드를 들어, 우리는 항상 코드가 앞에서부터 뒤로 순차적으로 실행하고 있다고 생각하는 데 사용됩니다. 이 스레드 내에 있기 때문에, 완전히 잘못 말할 수 없다 이해 그래서,이처럼 행동을한다. 그러나, 프로그램의 동시 실행 순서가 나타날 수 있습니다. 사설 코드가 나중에 실행됩니다 : 그것은 시각적 인상이 있습니다. 그것은이 이상한되지 않는 소리? 그 이유 주문 문제는 프로그램의 구현 지침을 재 배열 할 수있다에, 지침은 순서가 원래의 지침과 일치하지 않을 수 있습니다 재 배열입니다.