일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Spring Batch
- 일괄처리
- OSIV
- 싱글 스레드
- Spring Framework
- spring boot
- 가변 객체
- @Bean
- 참조 타입
- 빈
- @Configuration
- 생성자 주입
- Request flow
- Batch
- Handler Adepter
- Dispatcher Servlet
- View Resolver
- 익명 함수
- 스프링 빈
- 메서드 주입
- Open EntityManager In View
- mavenCentral
- @componentScan
- 컴포넌트스캔
- open-in-view
- 불변 객체
- @FunctionalInterface
- 이펙티브 자바
- open session in view
- 필드 주입
Archives
- Today
- Total
보다 더 나은 내일의 나를 위해
멀티 스레드와 싱글스레드 본문
멀티 스레드와 싱글 스레드 간단히
우선 싱글 스레드는 프로그램을 실행할 때 스레드를 단 하나만을 사용해 수행하는 기술을 말합니다. 따라서 프로그램을 차례대로 순차 처리하게 됩니다. 반면에 멀티 스레드는 여러 개의 스레드를 사용해 둘 이상의 프로그램을 동시에 실행하는 기술입니다. 이는 컨텍스트 스위칭(context switching)을 통해서 여러 스레드를 병렬적으로 처리함으로써 가능하게 할 수 있었습니다.
그렇다면 각각의 장﹒단점은 무엇일까요?
멀티 스레드
- 장점
- 응답성
- 긴 작업을 수행하거나 프로그램의 일부분(스레드)이 중단되어도 프로그램의 수행이 계속 수행되므로 사용자에 대한 응답성이 증가하게 됩니다.
- 자원 공유
- 스레드는 그들이 속한 프로세스의 자원들과 메모리를 공유합니다. 따라서 한 응용 프로그램이 같은 주소 공간 내에 여러 개의 다른 활동성 스레드를 가지고 있을 수 있습니다.
- 경제성
- 프로세스를 새로 생성하는 것은 비용이 많이 듭니다. 따라서 속한 프로세스의 자원을 공유하는 스레드를 사용해 문맥교환(context switching)을 하는 것이 경제적으로 좋습니다.
- 멀티프로세서 활용
- 멀티프로세서 구조에서 각각의 스레드가 다른 프로세서에서 병렬로 수행될 수 있습니다.
- 응답성
- 단점
- 다중 스레드 환경에서 동시성 이슈, 데드락 등이 발생할 수 있습니다.
- 시스템을 설계하기 어렵습니다.
- 스레드 스케줄링을 고려해야 합니다.
싱글 스레드
- 장점
- 문맥 교환 작업을 요구하지 않습니다. 따라서 비용이 많이 들지 않게 됩니다.
- 동시성 이슈가 발생하지 않으므로 동기화를 신경 쓰지 않아도 됩니다.
- 멀티 스레드 환경에서 문맥 교환에 드는 시간 때문에 싱글 스레드가 더 빠른 경우가 있을 수 있습니다.
- 비용이 적게 듭니다.
- 단점
- 멀티프로세서를 활용하지 못합니다.
- 연산량이 많은 작업을 수행한다면 전체 수행 시간이 오래 걸립니다.
- 스레드 중단 시 프로그램 자체가 멈추게 됩니다.
Comments