컨텍스트 : 현재 작업하는 문맥
멀티태스킹을 할 때 각 스레드를 멈추는 시점에 실행하던 값을 메모리에 저장해 두어야 함.
이전에 실행 중인 값을 메모리에 잠깐 저장하고, 이후 다시 실행하는 시점에 저장한 값을 불러와야 한다.
>> 컨텍스트 스위칭은 빈번할수록 좋지 않음. 컨텍스트 스위칭 비용은 매우 큼.
>> 하지만! 어떤 작업이느냐에 따라 다름.
스레드가 하는 작업: CPU 바운드 작업 vs I/O 바운드 작업
- CPU 바운드 작업 : 연산 능력을 많이 요구하는 작업.
- I/O 바운드 작업: 입출력 작업을 많이 요구하는 작업. 디스크, 네트워크, 파일 시스템과 같은 입출력 작업.
- 실무에서는 I/O 바운드 작업이 많다. CPU 를 많이 사용하지 않음.
스레드의 숫자는 스레드 작업에 따라 다르게 설정해야 함
- CPU 바운드 작업 : cpu 코어 수 + 1개
- I/O 바운드 작업: cpu 코어 수 보다 많은 스레드를 생성. 컨텍스트 스위칭 비용을 고려해 적절한 성능 테스트로 결정
'Language > Java' 카테고리의 다른 글
[Java] 자바 메모리 구조 (1) | 2025.05.01 |
---|---|
[Java] 멀티스레드, 멀티태스킹, 스레드 (1) | 2025.04.20 |
[Java] Optional (1) | 2024.07.06 |
[Java] Stream (0) | 2024.06.17 |
[Java] boolean , if문 (0) | 2024.06.08 |