package thread.control;
import thread.start.HelloRunnable;
import static thread.util.MyLogger.log;
public class ThreadInfoMain {
public static void main(String[] args) {
// main 스레드
Thread mainThread = Thread.currentThread();
log("mainThread = " + mainThread);
log("mainThread.threadId=()=" + mainThread.getId()); // 자동으로 만들어주는 ID
log("mainThread.getName()=" + mainThread.getName()); // 스레드 이름
log("mainThread.getPriority()=" + mainThread.getPriority()); // 스레드 우선순위 -> 우선순위가 높을 수록 많이 실행됨 (default 5)
log("mainThread.getThreadGroup()=" + mainThread.getThreadGroup()); // 스레드 그룹
log("mainThread.getState()=" + mainThread.getState()); // 스레드의 구동 가능 상태 여부 (RUNNABLE -> 구동 가능 상태)
System.out.println();
Thread myThread = new Thread(new HelloRunnable(), "myThread");
log("mainThread = " + myThread);
log("mainThread.threadId=()=" + myThread.getId()); // 자동으로 만들어주는 ID
log("mainThread.getName()=" + myThread.getName()); // 스레드 이름
log("mainThread.getPriority()=" + myThread.getPriority()); // 스레드 우선순위 -> 우선순위가 높을 수록 많이 실행됨 (default 5)
log("mainThread.getThreadGroup()=" + myThread.getThreadGroup()); // 스레드 그룹
log("mainThread.getState()=" + myThread.getState()); // 스레드의 구동 가능 상태 여부 (NEW -> 생성하고 실행 안됨)
}
}
11:11:17.312 [ main] mainThread = Thread[#1,main,5,main]
11:11:17.317 [ main] mainThread.threadId=()=1
11:11:17.317 [ main] mainThread.getName()=main
11:11:17.320 [ main] mainThread.getPriority()=5
11:11:17.320 [ main] mainThread.getThreadGroup()=java.lang.ThreadGroup[name=main,maxpri=10]
11:11:17.320 [ main] mainThread.getState()=RUNNABLE
11:11:17.321 [ main] mainThread = Thread[#30,myThread,5,main]
11:11:17.321 [ main] mainThread.threadId=()=30
11:11:17.321 [ main] mainThread.getName()=myThread
11:11:17.322 [ main] mainThread.getPriority()=5
11:11:17.322 [ main] mainThread.getThreadGroup()=java.lang.ThreadGroup[name=main,maxpri=10]
11:11:17.322 [ main] mainThread.getState()=NEW
스레드 생성 시, Runnable 인터페이스 구현체와 스레드의 이름을 전달할 수 있다.
Thread myThread = new Thread(new HelloRunnable(), "myThread");
HelloRunnable
은 Runnable
의 구현체이다.log("myThread = " + myThread);
myThread
객체를 문자열로 반환하여(toString()
) 출력한다.Thread
클래스의 toString()
메서드 출력 필드 → Thread[#30,myThread,5,main]
log("mainThread.threadId=()=" + myThread.threadId());
threadId()
: 스레드의 고유 식별자를 반환하는 메서드