728x90
프로세스
- 실행 중인 하나의 프로그램을 말함
- 하나의 프로그램이 다중 프로세스 만들기도 함
- 자바는 하나의 애플리케이션에 하나의 프로세스가 존재하며 그 안에 멀티스레드를 제공함

멀티 태스킹
- 두 가지 이상의 작업을 동시에 처리하는 것
- 멀티 프로세스 : 독립적으로 프로그램들을 실행하고 여러 가지 작업 처리
- 멀티 스레드 : 한 개의 프로그램을 실행하고 내부적으로 여러 가지 작업 처리

메인 스레드
- 모든 자바 프로그램은 메인 스레드가 main() 메소드를 실행하면서 시작된다.
- main() 메소드의 첫 코드부터 아래로 순차적으로 실행
- 실행 종료 조건은 마지막 코드를 실행하거나, return 문을 만나면 실행이 종료된다.
- main 스레드는 작업 스레드들을 만들어서 병렬로 코드들을 실행할 수 있다. 즉 멀티 스레드를 생성해서 멀티 태스킹을 수행한다.
프로세스의 종료
- 싱글 스레드 : 메인 스레드가 종료하면 프로세스도 종료
- 멀티 스레드 : 실행 중인 스레드가 하나라도 있다면, 프로세스는 미종료
동시성과 병렬성
- 동시성 : 멀티 작업을 위해 하나의 코어에서 멀티 스레드가 번갈아 가며 실행하는 성질
- 병렬성 : 멀티 작업을 위해 멀티 코어에서 개별 스레드들을 동시에 실행하는 성질

스레드 스케줄링
- 스레드의 개수가 코어의 수보다 많을 경우에는 스레드를 어던 순서로 동시성을 실행할 것인가 결정 → 스레드 스케줄링
- 스케줄링에 의해 스레드들은 번갈아 가며 run() 메소드를 조금씩 실행
자바의 스레드 스케줄링
- 우선 순위 방식 (코드로 제어 가능)
- 우선 순위가 높ㅇ느 스레드가 실행 상태를 더 많이 가지도록 스케줄링
- 1~10까지 값을 가질 수 있으며 기본은 5, 가장 높은 순위는 10
- 순환 할당 방식 (코드로 제어할 수 없음)
- 시간 할당량을 정해서 하나의 스레드를 정해진 시간만큼 실행
- 대부분의 JVM은 스레드 스케줄링을 호스트 운영체제에 위임함
스레드 우선 순위
- 스레드들이 동시성을 가질 경우 우선적으로 실행할 수 있는 순위
- 우선 순위는 1(낮음)부터 10(높음)까지 부여(기본 : 5)
- 우선순위 변경방법
- thread.setPriority(우선순위);
- thread.setPriority(Thread.MAX_Priority);
- thread.setPriority(Thread.NORM_Priority);
- thread.setPriority(Thread.MIN_Priority);
우선 순위 효과
- 싱글 코어 경우
- 우선순위가 높은 스레드가 실행 기회를 더 많이 가지기 때문에 우선 순위가 낮은 스레드보다 계산 작업을 빨리 끝낸다.
- 멀티 코어 경우
- 쿼드 코어 경우에는 4개의 스레드가 병렬성으로 실행될 수 있기 때문에 4개이하의 스레드를 실행할 경우에는 우선 순위 방식은 크게 영향을 미치지 못함
- 쾨소한 5개 이상의 스레드가 실행되어야 우선 순위의 영향을 받음
멀티스레드를 사용할 때 공유되는 메모리
1) 힙 메모리
- 자바에서 모든 객체는 힙 메모리에 저장됨. 이는 모든 스레드에 의해 공유되는 영역
- 한 스레드에서 생성된 객체는 다른 스레드에서도 접근 가능함
2) 메소드 영역
- Static 영역은 모든 클래스와 정적 변수를 저장하는 공간임
- 이 영역은 모든 스레드에 의해 공유됨
스레드마다 독립적으로 관리되는 영역
1) 스택 메모리
- 각 스레드는 자신만의 스택을 가짐. 이 스택에는 메소드 호출시의 로컬변수, 매개변수 및 반환값 등이 저장됨.
- 각 스레드의 스택은 다른 스레드와 독립적이기 때문에 서로 접근할 수 없음
2) 스레드 로컬 저장소
- 이는 특정 스레드에 의해서만 접근 가능한 데이터를 저장하는 영역
- 스레드마다 개별적인 데이터를 유지하고 싶을 때 사용됨
728x90
'개발공부 > 인공지능' 카테고리의 다른 글
| 볼록함수 (Convex Function) (0) | 2025.06.03 |
|---|---|
| 경사하강법 (Gradient Descent Method) (1) | 2025.06.03 |
| 선형 회귀, 라쏘 회귀, 릿지 회귀 (1) | 2025.05.29 |
| KNN (1) | 2025.05.28 |
| AI 개요 (5) | 2025.05.26 |