Week4 Thread-1

나현·2026년 9월 28일

java2

목록 보기
4/7

멀티태스킹

멀티태스킹: 하나의 CPU가 여러가지 작업을 번갈아 처리.
하나의 응용프로그램이 여러 개의 태스크를 동시에 처리
1) 멀티프로세스

  • 여러 CPU/CPU코어를 이용해 여러 프로세스를 동시에 실행
  • 프로세스: OS에서 관리하는 실행단위
  • 프로세스간 메모리 공유x
  • 안정성 높음
  • 웹 브라우저가 탭마다 별도의 프로세스를 띄움

2) 멀티쓰레드

  • 하나의 프로세스 내에서 여러 미니 프로세스들 동시 수행
  • 쓰레드: 프로세스 내에서 메모리 공유하는 단위(각각의 작업)
  • 경량성(프로세스보다 생성/소멸 비용이 낮음)
  • 각 쓰레드는 메모리를 공유하여 독립적으로 동작하여 빠른 응답에 최적
  • 동시에 접근하면서 동기화 문제 발생O
  • 자바의 기본 멀티쓰레드: 최소 하나의 메인 쓰레드를 가지고 시작
  • 멀티 쓰레드 구현 전에 몇 개의 작업을 병렬로 실행할 건지 결정해야함
    -> Runnable 인터페이스 사용하면 고수준의 쓰레드 관리 API 사용O

3) 자바의 메인 쓰레드

  • 모든 자바 프로그램은 메인 쓰레드가 main()메소드 실행하며 시작
  • 실행 종료 조건: 마지막 코드를 만날 때, Return 문 만날 때
  • Main 쓰레드는 작업 쓰레드를 만들어 병렬로 코드 실행 -> 멀티 태스킹
  • 프로세스 종료:
    싱글 쓰레드 - 메인 쓰레드가 종료하면 프로세스도 종료
    멀티 쓰레드 - 실행 중인 쓰레드 있으면 미종료

4) 동시성과 병렬성
(1) 동시성

  • 하나의 CPU가 작업을 쪼개 번갈아 실행 -> 독립적으로 돌아가는 것'처럼' 보임
  • 쓰레드1 -> 쓰레드2 -> 쓰레드1 -> 쓰레드2

(2) 병렬성

  • 여러 CPU가 실제로 동시에 각각의 작업 실행
  • 쓰레드1+쓰레드2
  • 코어 수<쓰레드 수 -> 스케쥴링 필요

쓰레드 생성과 실행

1) 주요 메소드

  • void start()
  • void run()
  • static void sleep()
  • void interrupt(): 중단 알림
  • void join(): 다른 쓰레드가 종료될 때까지 현재 쓰레드 대기. 시간지정 가능

2) 쓰레드 상태
(1) 생성 상태

  • 쓰레드 클래스를 이용해 새로운 쓰레드 객체 생성
  • start()로 생성된 쓰레드 시작

(2) 실행 가능 상태

  • 쓰레드가 스케줄링 큐에 넣어지고 스케줄러에 의해 우선순위에 따라 실행

(3) 실행 가능 상태 -> 실행 중지 상태

  • wait(), sleep(), 입출력 작업을 위해 대기하는 경우

0개의 댓글