개발놀이터

면접 준비 : 동시성 문제 본문

CS 지식/면접준비

면접 준비 : 동시성 문제

마늘냄새폴폴 2022. 11. 30. 23:31

Q. 동시성 문제에 대해서 설명해주세요
A. 동시성 문제란 멀티스레드 환경에서 하나의 변수 혹은 메소드에 여러 스레드가 접근해 값이 중복되어 개발자가 원했던 로직대로 움직이지 않는 현상을 말합니다. 동시성 프로그래밍에서는 CPU와 RAM의 중간에 위치하는 CPU Cache Memory와 병렬성이라는 특징 때문에 다수의 스레드가 공유 자원에 접근할 때 가시성과 원자성이라는 두가지 문제가 발생합니다. 가시성을 해결하기 위해선 volatile 키워드를 원자성을 해결하기 위해선 synchronized 키워드를 사용해야 합니다. 

Q. 가시성이랑 원자성이 정확히 어떤 문제인가요?
A. 여러 개의 스레드가 사용됨에 따라 CPU Cache Memory 와 RAM의 데이터가 서로 일치하지 않아 생기는 문제입니다.