스레드 생성
자바에서는 JDK가 모든 스레드의 관련 속성과 메서드를 스레드 클래스로 압축한다.
그래서 새 스레드를 만들려면 스레드 객체를 생성해야한다.
package thread.creation.example;
public class Main {
public static void main(String[] args) {
Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
//Code that will run in a new thread
}
});
//lambda java8
Thread thread2 = new Thread(()->{
//스레드명을 알 수 있는 static 메서드
Thread.currentThread().getName();
});
//start()로 run()을 실행
thread1.start();
}
}
runnable 인터페이스로 다른 스레드에서 코드를 실행하는 방법
스레드 실행
- start() 메서드 사용해야 스레드 객체가 실행됨
- start() 메서드를 호출하면 run() 메서드가 실행된다.
- sleep 정적 메서드를 사용해서 스레드를 잠시 멈출수 있다. 반복되는것은 아니고, 운영체제에게 지시하는것.
“이 시간이 끝나기 전까지는 이 스레드를 스케쥴링 하지 마라”
다시말하면, 이 스레드는 sleep되는 시간동안 CPU를 사용하지 않는다.
스레드 이름 정하기
thread.setName("새스레드“)
스레드에 이름을 붙일수 있다.
디버깅할때 편하기 위해 의미있는 이름을 붙이는게 좋다.
스레드 우선순위 설정
setPriority(10)
안에 숫자는 1~10이 들어감
maxPriority, minPriority, normPriority
동적 우선순위의 정적요소를 계획적으로 설정할 수 있다
스레드 동작 디버깅 & 예외처리
- 새 스레드에 breack point를 걸고 계속 실행했을때
메인스레드는 이미 완료되고 JVM이 파괴될수 있다.
- thread.setUncauhtExceptionHandler
UncheckedException은 직접 캐치해서 특정방법으로 처리하지않으면 전체 스레드를 다운시킴
처음부터 전체스레드에 해당하는 예외핸들러를 지정할 수 있다
- 스레드 내에서 발생한 exception이 어디에서도 캐치되지않으면 handler가 호출될거다.
'Back > Java' 카테고리의 다른 글
[JAVA/멀티스레드] JAVA멀티스레딩 - 스레드조정 (스레드 종료 및 Demon 스레드) (0) | 2023.03.27 |
---|---|
[JAVA/멀티스레드] JAVA멀티스레딩 - 스레드생성2부. 스레드 상속 (도둑과 경찰 예제) (0) | 2023.03.26 |
[JAVA/멀티스레드] JAVA멀티스레딩 - 운영체제기초2 (컨텍스트 스위치) (0) | 2023.03.22 |
[JAVA/멀티스레드] JAVA멀티스레딩 - 개요와 운영체제기초 (0) | 2023.03.22 |
[Java/Reactor] Mono then() 동작 흐름 테스트 (0) | 2023.02.22 |