[Java] Thread 이름 설정하는 방법 알아보기.

2021-02-10


여러 개의 스레드를 사용하다 보면, 스레드 간의 이름이 혼동되는 상황이 발생할 수 있다. 이 경우를 대비하여 스레드 간의 이름을 설정하는 방법이 존재하는데 오늘은 이와 같은 방법을 알아보자.


  • 예제 스레드 2개

package Thread;

public class Thread_A extends Thread{
	public Thread_A() {
		setName("Thread_A");
	}
	
	@Override
	public void run() {
		for(int i = 0; i < 5; i++) {
			System.out.println("상속받은 Thread_A 클래스가 실행 중 입니다.");
		}
	}
}

 

스레드는 총 2가지 스레드를 사용할 것이다. 하나는 클래스에서 Thread를 상속받아 구현한 스레드(Thread_A)이며, 다른 하나는 메인 메서드 내부에서 자체적으로 Runnable 객체를 구현한 스레드(thread1)이다.

 

package Thread;

public class main {

	public static void main(String[] args) {

		//스레드 이름 설정하기
		Thread thread1 = new Thread(()-> {
			for(int i = 0; i < 5; i++) {
				System.out.println("Thread1 이 실행중입니다.");
			}

		});	
		
		thread1.setName("Thread1");
		System.out.println("현재 동작중인 스레드는- " + thread1.getName() + " -입니다.");
		thread1.start();
		
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		//쓰레드간 구별을 주기위해 잠깐 스레드를 멈춤
		
		
		Thread_A threada = new Thread_A();
		System.out.println("현재 동작중인 스레드는- " + threada.getName() + " -입니다.");
		threada.start();
		}
	}        
  

 

사실 누구나 예상할 수 있는 메서드이다. setName을 사용하면 스레드에 이름을 붙일 수 있다. 이후 지금 동작하는 스레드가 무엇인지 알고 싶으면 getName 메서드를 호출하여, 해당 정보를 얻을 수 있다. 실행결과는 아래와 같다.