동시성(Concurrency)과 병렬성(Parallelism)
·
CS
최근 락을 적용하여 동시성 문제를 해결하면서 동시성과 병렬성의 개념을 혼동하고 있어 각 개념을 정리해 보았습니다. 동시성(Concurrency) 동시성은 하나의 코어(싱글 코어)에서 여러 작업을 번갈아 가면서 처리하는 방식입니다.CPU는 한 번에 하나의 작업만 처리할 수 있기 때문에 여러 작업을 번갈아 가면서 처리하는데, 이를 context switching이라고 합니다.context switching이 빠르게 이루어져 물리적으로 동시에 실행되는 것이 아니어도 작업이 동시에 실행되는 것처럼 보이게 하는 것입니다. 따라서 여러 작업이 동시에 공유된 자원에 접근하는 경우 동기화 문제가 발생할 수 있습니다. 병렬성(Parallelism) 병렬성은 CPU가 여러 개(멀티 코어) 있어서 CPU에서 각 작업을 동시..
동시성 이슈가 발생하는 이유와 해결방법(내부자원, 외부자원)
·
Java
동시성 이슈는 백엔드 개발자라면 알아야 하는 중요한 개념 중 하나입니다.동시성 이슈를 해결하는 방법은 무수히 많기 때문에 이를 정리하고자 해당 글을 작성하게 되었습니다. 동시성 이슈란?동시성 이슈란 하나의 자원에 대해서 여러 스레드가 동시에 접근하여 수정하는 경우 발생하는 문제입니다.이는 곧 스레드의 안정성이 깨졌다고 말할 수 있습니다. 동시성 이슈가 발생하는 예시조회수 증가 프로그램을 통해 동시성 이슈가 발생하는 상황을 확인해 보겠습니다. 해당 코드를 실행시켰을 때 100*100인 10000 조회수 값이 나오기를 기대하지만 기대와는 다른 결과 값인 9800이 나오게 됩니다.이는 동시성 이슈가 발생했기 때문에 기대와 다른 결과 값이 나오는 것입니다. 🤔 그럼 동시성 이슈는 왜 발생하는 것일까요?Cont..