2023년 1월 1일
08:00 AM
Buffering ...

최근 글 👑

멀티스레드

2025. 5. 28. 17:26ㆍ개발공부/인공지능
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