2021-07-22

0722 자바의 volatile, synchronized 키워드란

 멀티 스레드 환경에서 발생하는 부적절한 결과를 예방하기 위한 방법

1. volatile :

해당 변수의 값을 바로 메인 메모리에서 가져올 수 있게 해주는 키워드이다.

CPU캐시로부터 값을 읽어오면- 다른 스레드에서 값을 변경했을때 두 변수의 값의 일관성이 깨지기 때문이다.

따라서 메인 메모리로부터 직접 읽기/쓰기를 가능하게 하여 데이터 값의 일관성을 보장한다.

2. synchronized :

여러 스레드가 하나의 자원을 공유할 때, 점유중인 스레드 이외에는 못 사용하도록 로킹하는 키워드.

volatile키워드를 사용한다고 하더라도, 동시에 읽기가 이루어지고 쓰기가 이루어질 경우, 결과의 일관성을 보장할 수 없다.

따라서, 로킹을 통해 스레드의 접근을 제어함으로써 동시성문제를 해결한다!!

추가)) synchronized의 사용기법 - 1) 메소드 전체에 사용하기 2) 메소드 안의 특정 구간에 대해서 사용하기 가 있다.

1)의 경우 개발자는 편하지만,,, 메소드 전체를 로킹해버리기 때문에 그만큼 성능이 저하되게 된다(다른 스레드는 그만큼 기달려야 하기 땜에. ㅜㅅㅜ)

따라서 2)를 쓰도록 노력하는 개발자가 되자!! 

댓글 없음:

댓글 쓰기

0328 fdisk, mkfs, mount, fstab

 1. 하드디스크를 붙인다. 2. fdisk -l로 하드디스크를 확인한다.  - interactiive한 커맨드모드 사용하여 (m) 붙인 하드디스크의 파티셔닝을 한다.  - 마지막에 w를 해야 실제로 반영이 된다.  3. mkfs를 하여 어떤 파일시스...