Java의 Thread는 멀티쓰레딩 프로그래밍을 지원하기 위한 Java 언어의 기능입니다.
쓰레드는 프로세스 내에서 실행되는 작은 실행 단위로, 여러 쓰레드가 동시에 실행됨으로써 멀티태스킹을 구현할 수 있습니다
쓰레드의 기본 개념
- 프로세스(Process): 실행 중인 프로그램을 의미하며, 각 프로세스는 독립적인 메모리 공간을 갖습니다.
- 쓰레드(Thread): 프로세스 내에서 실제 작업을 수행하는 실행 단위입니다. 하나의 프로세스는 여러 쓰레드를 가질 수 있으며, 메모리를 공유합니다
멀티 스레드의 활용
- 대용량 데이터의 분할 병렬 처리
- 애플리케이션의 UI 네트워크 통신
- 다수의 클라이언트 요청을 받는 서버
장점
- 시스템 자원 소모 감소
- 프로세스를 생성하여 자원을 할당하는 요청이 줄어들기 때문에 자원을 효율적으로 관리할 수 있다.
- 시스템 처리량 증가
- 스레드 사이 데이터를 주고 받는 것이 간단해지고 시스템 자원 소모가 줄어들게 된다.
- 스레드 사이의 작업량이 작아 Context Switching이 빠르다.
- 간단 통신 방법으로 프로그램 응답 시간을 단축
- 스레드는 프로세스 내의 Stack 영역을 제외하고 모든 영역을 공유하기 때문에 통신 부담이 적다.
단점
- 주의 깊은 설계가 필요하며, 디버깅이 까다롭다.
- 서로 자원을 소모하다 충돌이 일어날 수 있다.
- 하나의 스레드에 문제가 발생하면 전체 프로세스가 영향을 받을 수 있다.
'Java' 카테고리의 다른 글
| [Java] 제너릭(Generics) (0) | 2024.09.11 |
|---|---|
| 전략패턴으로 코드 개선 (0) | 2024.09.04 |
| [Java] StringBuilder (0) | 2024.08.19 |
| [Java] 문자열 내장 메서드 (0) | 2024.08.16 |
| [Java] String (0) | 2024.08.16 |