본문 바로가기
Develop

이것이 자바다 - 멀티 스레드

by _dreamgirl 2020. 2. 22.
반응형

이것이 자바다- 멀티 스레드

 

프로세스- 운영체제에서 실행되는 하나의 어플리케이션

스레드 - 하나의 코드 실행 흐름

멀티 스레드- 두가지 이상의 스레드가 동작하는 것

 

작업 스레드 생성과 실행

  1. Thread 클래스로부터 직접 생성
  • Runnable 매개값으로 갖는 생성자를 호출 
  1. Thread 하위 클래스로부터 생성
  • Thread를 상속한 후 run 메소드를 재정의
  1. 스레드의 이름
  • setName, getName을 통해 이름을 정의할 수 있음
  • 기본적으로 생성되는 스레드의 이름은 “Thread-n”

 

스레드 우선순위

  • 우선순위 방식과 순환 할당 방식 두가지가 있다
  • 우선순위 방식은 우선순위가 높은 스레드 실행 상태를 더 많이 가지도록 스케줄링하는 것이고 개발자가 우선순위를 매겨 코드로 제어할 수 있다.
  • 순환 할당 방식은 시간 할당량(Time Slice)를 정해서 하나의 스레드를 정해진 시간만큼 실행하고 다시 다른 스레드를 실행하는 방식, 자바 가상 기계에 의해서 정해지기 때문에 코드로 제어할 수 없다.

 

동기화 메소드 및 동기화 블록

  • 멀티 스레드 프로그램에서 단 하나의 스레드만 실행할 수 있는 코드영역을 임계영역이라고 한다.
  • 자바는 임계 영역을 지정하기 위해 동기화 메소드와 동기화 블록을 제공한다.
  • 동기화 메소드는 synchronized 키워드를 사용한다.
  • 동기화 메소드 및 블록을 이용하면 스레드들 중 하나가 실행하면 다른 스레드를 해당 구역을 실행할 수 없다. 

 

스레드 상태

  • 객체 생성, 실행 대기, 일시정지, 종료 상태가 있다

 

스레드 상태 제어

  • Sleep : 주어진 시간동안 일시정지
  • Yield: 다른 스레드에게 실행 양보
  • Join : 다른 스레드의 종료를 기다림
  • Wait, notify, notifyAll : 스레드 간 협업
  • Stop Flag, interrupt : 스레드의 안전한 종료

 

데몬 스레드

  • 주 스레드의 작업을 돕는 보조적인 역할을 하는 수행하는 스레드

 

스레드 그룹

  • 스레드를 묶어서 관리하는 목적으로 사용
  • JVM 운영에 필요한 스레드를 생성해서 system 스레드 그룹에 포함

 

반응형

댓글