반응형
이것이 자바다- 멀티 스레드
프로세스- 운영체제에서 실행되는 하나의 어플리케이션
스레드 - 하나의 코드 실행 흐름
멀티 스레드- 두가지 이상의 스레드가 동작하는 것
작업 스레드 생성과 실행
- Thread 클래스로부터 직접 생성
- Runnable 매개값으로 갖는 생성자를 호출
- Thread 하위 클래스로부터 생성
- Thread를 상속한 후 run 메소드를 재정의
- 스레드의 이름
- setName, getName을 통해 이름을 정의할 수 있음
- 기본적으로 생성되는 스레드의 이름은 “Thread-n”
스레드 우선순위
- 우선순위 방식과 순환 할당 방식 두가지가 있다
- 우선순위 방식은 우선순위가 높은 스레드 실행 상태를 더 많이 가지도록 스케줄링하는 것이고 개발자가 우선순위를 매겨 코드로 제어할 수 있다.
- 순환 할당 방식은 시간 할당량(Time Slice)를 정해서 하나의 스레드를 정해진 시간만큼 실행하고 다시 다른 스레드를 실행하는 방식, 자바 가상 기계에 의해서 정해지기 때문에 코드로 제어할 수 없다.
동기화 메소드 및 동기화 블록
- 멀티 스레드 프로그램에서 단 하나의 스레드만 실행할 수 있는 코드영역을 임계영역이라고 한다.
- 자바는 임계 영역을 지정하기 위해 동기화 메소드와 동기화 블록을 제공한다.
- 동기화 메소드는 synchronized 키워드를 사용한다.
- 동기화 메소드 및 블록을 이용하면 스레드들 중 하나가 실행하면 다른 스레드를 해당 구역을 실행할 수 없다.
스레드 상태
- 객체 생성, 실행 대기, 일시정지, 종료 상태가 있다
스레드 상태 제어
- Sleep : 주어진 시간동안 일시정지
- Yield: 다른 스레드에게 실행 양보
- Join : 다른 스레드의 종료를 기다림
- Wait, notify, notifyAll : 스레드 간 협업
- Stop Flag, interrupt : 스레드의 안전한 종료
데몬 스레드
- 주 스레드의 작업을 돕는 보조적인 역할을 하는 수행하는 스레드
스레드 그룹
- 스레드를 묶어서 관리하는 목적으로 사용
- JVM 운영에 필요한 스레드를 생성해서 system 스레드 그룹에 포함
반응형
'Develop' 카테고리의 다른 글
이것이 자바다 - IO 기반 입출력 및 네트워킹 (0) | 2020.02.22 |
---|---|
Java9 Java10 특징 찾아보기 (0) | 2020.02.22 |
이것이 자바다 - 스트림과 병렬처리 (0) | 2020.02.22 |
이것이 자바다 - 컬렉션 프레임워크 (0) | 2020.02.22 |
이것이 자바다 - 제네릭 & 람다 (0) | 2020.02.22 |
댓글