[백엔드] 동기화/동시성 문제(한 작업에 대한 병렬처리) 해결을 위한 개념2 - 싱글 스레드와 멀티 스레드

Hyo Kyun Lee·3일 전
0

백엔드

목록 보기
13/16

1. 개요

동시성 문제를 해결하기 위한 개념을 학습하기 위해 싱글 스레드와 멀티 스레드 공부 내용을 기록한다.

2. 싱글스레드

프로세스를 하나의 스레드로만 작업하는 과정을 의미하며, Java의 경우 메인메서드를 실행하였을때 메인스레드를 생성한다.

별도의 스레드 요청 작업이 없다면 메인스레드라는 싱글스레드에 의해 작업을 진행하며, 싱글스레드인 메인스레드 종료 후에 jvm도 최종적으로 같이 종료된다.

3. 멀티스레드

Java에서는 main() 메서드를 실행하면서 메인 스레드를 자동 실행하는데, 필요에 따라 작업 스레드를 추가 요청하여 병렬로 처리할 수 있다.

메인스레드 안에서 다량의 멀티스레드를 만들어 작업효율을 늘릴 수 있다.

이렇게 생성한 다발적인 작업단위들을 멀티스레드라 한다.

4. 멀티스레드의 의의

  • 여러 스레드를 통해 하나의 작업을 동시에 진행할 수 있으므로 성능이 좋아진다.
  • Stack을 제외한 모든 영역에서 프로세스의 메모리(Heap)를 공유하여 자원을 효율적으로 사용할 수 있다.
  • 경우에 따라 다른 작업의 응답을 기다리지 않기에(비동기) 빠르게 응답을 받을 수 있다.

5. 멀티스레드의 단점

  • 프로세스 자원을 공유하면서 생기는 자원경쟁 및 처리시점 등으로 인해 동기화 문제가 발생할 수 있다(최종적인 연산 결과의 정합성이 일치하지 않을 수 있음)
  • 스레드의 자원대기 및 자원점유가 이루어지지 않는 교착상태(데드락)가 발생할 수 있다.

0개의 댓글

관련 채용 정보