기본 Thread 실행 코드
import java.util.logging.Logger;
public class Main {
public static void main(String[] args) {
Logger logger = Logger.getLogger("MAin Logger");
//default Thread
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
logger.info("Running...1 Name = " + Thread.currentThread().getName());
logger.info("Running...1 = Priority " + Thread.currentThread().getPriority());
throw new RuntimeException("Internal Exception");
}
});
thread.setPriority(Thread.MIN_PRIORITY);
thread.setName("Error Thread");
// thread.run(); //Main Thread
thread.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable e) {
System.out.println("Thread is dead with " + t.getName() + " / " + e.getMessage());
}
});
thread.start(); // new Thread
//Ramda
Thread thread2 = new Thread(() -> logger.info("Running...2 = " + Thread.currentThread().getName()) );
thread2.setPriority(Thread.MAX_PRIORITY);
thread2.setName("new Name");
thread2.run(); //Main Thread
thread2.start(); // new Thread
}
}
이 코드는 아래와 같은 결과를 만들어 낸다.
5월 24, 2021 4:58:20 오후 Main lambda$main$0
INFO: Running...2 = main
5월 24, 2021 4:58:20 오후 Main$1 run
INFO: Running...1 Name = Error Thread
5월 24, 2021 4:58:20 오후 Main$1 run
INFO: Running...1 = Priority 1
Thread is dead with Error Thread / Internal Exception
5월 24, 2021 4:58:20 오후 Main lambda$main$0
INFO: Running...2 = new Name
간단히 중요한 포인트를 보자면 다음과 같다.
thread2.run(); //Main Thread
thread2.start(); // new Thread
Thread Run의 경우 신규 Thread를 생성하지 않고 현 Thread에서 작동 한다.
Start의 경우 신규 Thread를 생성한다.
thread2.setName("new Name");
Child 스레드가 Exception 났을 경우 확인을 위해서
thread.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable e) {
System.out.println("Thread is dead with " + t.getName() + " / " + e.getMessage());
}
});
Exception Handler를 설정 가능하다.
Thread의 우선 순위는
thread.setPriority(Thread.MIN_PRIORITY);
를 통해서 설정 가능 하다.
728x90
반응형
'JAVA' 카테고리의 다른 글
Java의 동기화 및 Locking 기법 들 (Synchronized, ReentrantLock, Semaphore, Atomic Package, varHandle) (0) | 2021.05.31 |
---|---|
javaFX java version 11이상에서 실행하기 (2) | 2021.05.28 |
Thread Demon & Join (0) | 2021.05.25 |
Thread 관련 (0) | 2021.05.24 |
Java로 Microphone (마이크) 음성 데이터 저장하기 (0) | 2021.05.24 |