티스토리 뷰
멀티 스레드는 동시성(Concurrency) 또는 병렬성(Parallelism)으로 실행된다.
동시성은 멀티 작업을 위해 하나의 코어에서 멀티 스레드가 번갈아가며 실행하는 성질을 말하고
병렬성은 멀티 작업을 위해 멀티 코어에서 개별 스레드를 동시에 실행하는 성질을 말한다.
자바의 스레드 스케줄링은 Priority 방식과 Round Robin 방식을 사용한다.
Priority 방식은 우선순위가 높은 스레드가 실행 상태를 더 많이 가지도록 스케줄링 하는 것을 말한다.
Round Robin 방식은 시간 할당량(Time Slice)를 정해서 하나의 스레드를 정해진 시간만큼 실행하고 다시 다른 스레드를 실행하는 방식을 말한다.
Priority 방식에서 우선순위는 1~10으로 주어지며 1이 가장 낮고 10이 가장 높다.
우선순위를 부여하지 않으면 기본적으로 모든 스레드들은 5의 우선순위를 할당받는다.
우선 순위를 변경하고 싶다면 setPriority() 메소드를 이용하면 된다.
thread.setPriority(우선순위);
Parameter 값을 직접 줄 수도 있지만 가독성을 위해 Thread 클래스의 상수를 이용할 수도 있다.
thread.setPriority(Thread.MAX_PRIORITY); // 10
thread.setPriority(Thread.NORM_PRIORITY); // 5
thread.setPriority(Thread.MIN_PRIORITY); // 1
Priority Thread 예제
public class CalcThread extends Thread {
public CalcThread(String name) {
setName(name);
}
public void run() {
for (int i = 0; i < 2000000000; i++) {
}
System.out.println(getName());
}
}
public class Main {
public static void main(String[] args) {
for(int i = 1; i <= 10; i++) {
Thread thread = new CalcThread("thread" + i);
if(i != 10) {
thread.setPriority(Thread.MIN_PRIORITY);
} else {
thread.setPriority(Thread.MAX_PRIORITY);
}
thread.start();
}
}
}
'프로그래밍언어 > Java' 카테고리의 다른 글
정적 바인딩 vs. 동적 바인딩 (0) | 2019.06.13 |
---|---|
JAVA 직렬화와 Transient Keyword (0) | 2019.06.13 |
RxJava 시작 (0) | 2019.04.20 |
- Total
- Today
- Yesterday
- java
- 안드로이드
- Reactive programming
- Auto Layout
- 오토레이아웃
- watchos
- retrofit
- Apple Watch
- 애플워치
- 코틀린
- XCode
- SwiftUI
- 상속
- 스위프트
- apple
- databinding
- ios
- CloudComputing
- Notissu
- Rxjava
- Kotlin
- 컬렉션
- 함수형프로그래밍
- Swift
- android
- 아이폰
- 함수형
- C++
- 알고리즘
- Elliotable
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |