스레드의 개념 (3 개) --- 자바 메모리 모델 JMM

멀티 스레드 주위 JMM 주요 기술 포인트가 공전 자성, 가시성질서 빌드.

(1) 자성 (자성)

  자성은 작업이 중단되지 않습니다에 의미합니다. 여러 스레드로 실행되는 경우에도, 시작 행동하면, 다른 스레드의 방해되지 않습니다.

  예를 들어, I INT 정적 글로벌 변수에 대한 값을 할당 개의 스레드, 스레드 A는 스레드 B의 값을 할당 한 값을 할당 -1. 그래서 관계없이 방식의있는이 두 스레드, i 값은 1 또는 작업의 어떤 속도 -1입니다. 스레드 A 및 스레드 B 간의 간섭하지 않고있다. 이 자성의 기능입니다, 그것은 중단 할 수 없습니다.

  우리가 INT 데이터 형식 및 길이의를 사용하여 데이터 형식을 사용하지 않는 경우에, 당신은 정말 운이되지 않을 수 있습니다. 32 비트 시스템의 경우, 기록 데이터 길이 (64 비트 길이 등의 데이터) 원자 타입이다. 롱 타입의 기록 (또는 판독)의 두 개의 스레드, 스레드들 사이의 간섭 결과 인 경우 즉,이다.

2 시야 (가시성)

  스레드가 공유하는 변수의 값을 수정할 때 가시성 수단은 다른 스레드는 즉시 수정 여부를 알 수있다. 물론, 시리얼 프로그램, 문제의 가시성가 존재하지 않습니다. 당신이 단계 중 어느 하나의 변수를 수정하기 때문에,이 변수의 값이 다음 단계에서 읽기, 읽기는 새로운 수정 된 값이어야합니다.

3 질서 (주문)

  문제를 주문하는 것은 가장 단단한가에서 세 가지 질문을 이해할 수 있습니다. 코드 실행의 스레드를 들어, 우리는 항상 코드가 앞에서부터 뒤로 순차적으로 실행하고 있다고 생각하는 데 사용됩니다. 이 스레드 내에 있기 때문에, 완전히 잘못 말할 수 없다 이해 그래서,이처럼 행동을한다. 그러나, 프로그램의 동시 실행 순서가 나타날 수 있습니다. 사설 코드가 나중에 실행됩니다 : 그것은 시각적 인상이 있습니다. 그것은이 이상한되지 않는 소리? 그 이유 주문 문제는 프로그램의 구현 지침을 재 배열 할 수있다에, 지침은 순서가 원래의 지침과 일치하지 않을 수 있습니다 재 배열입니다.

추천

출처www.cnblogs.com/jackcto/p/11954614.html