currentThread
public class Main {
public static void main(String[] args) {
Thread thread=Thread.currentThread();
}
}
currentThread()는 정적 메소드로 현재 실행 중인 스레드 객체를 반환한다. 이 메서드는 현재 실행 중인 코드가 어느 스레드에서 실행되고 있는지 알아내는 데 사용된다.()
currentThread() vs new Thread()
currentThread() | new Thread() |
현재 실행 중인 스레드 객체를 반환한다. 이는 기존에 이미 실행 중인 스레드를 가져오는 메서드이다. |
새로운 스레드 객체를 생성한다. 이 객체는 아직 실행 중이지 않으며, start()를 호출해야 스레드가 실행된다. |
currentThread()의 주요 사용법
메인 스레드는 "main"이라는 이름을 가지고 있고, 작업 스레드는 자동적으로 "Thread-n"이라는 이름을 가진다. 작업 스레드의 이름을 변경하고 싶으면 Thread 클래스의 setName() 메소드를 이용해야 한다.
//main 스레드
Thread mainThread=Thread.currentThread();
System.out.println(mainThread.getName()+" 실행");
//작업 스레드
for(int i=0;i<5;i++) {
Thread threadA=new Thread() {
@Override
public void run() {
System.out.println(getName()+" 실행");
}
};
threadA.start();
//작업 스레드 이름 수정
Thread newThread=new Thread() {
@Override
public void run() {
System.out.println(getName()+" 실행");
}
};
chatThread.setName("newThread");
chatThread.start();
}
이때, 스레드는 독립적으로 실행되기 때문에 작업 스레드의 출력 순서는 예측할 수 없다.
'Language > JAVA' 카테고리의 다른 글
[JAVA]정적 메소드에서 this를 사용할 수 없는 이유 (2) | 2024.11.03 |
---|---|
[JAVA]Runnable 인터페이스를 구현해서 스레드를 만드는 이유 (0) | 2024.09.28 |
[JAVA]예외(Exception) vs 에러(Error) (0) | 2024.09.21 |
[JAVA]문자열 상수 풀(String Pool) (0) | 2024.09.08 |
[JAVA]equals() vs == (0) | 2024.09.08 |