본문 바로가기

강좌/JAVA THREAD

자바 쓰레드(Thread) - Runnable을 이용해서 구현 2 (조금 변형)

이 전내용은 Runnable 인터페이스를 구현받아 쓰레드를 생성했지만 메인 메소드에서 다시 Thread tt1 = new Thread()해서 실행 시켰다.


하지만 이런 방법보다 조금 더 개선된 코드를 구현 할 수가 있다.


예제로 보자.

그리고 항상 자바 API를 보자.




우선 메인 메소드를 보면 이전에는

t1 = new ThreadTest("First Thread", 5);

t2 = new ThreadTest("Second Thread", 5);


다음에 

Thread tt1 = new Thread(t1);

Thread tt2 = new Thread(t2);


tt1.start();

tt2.start();

를 생성했었다. 메인 메소드에 소스가 길어 지는건 바람직하지 않으니 지웠다.


그럼 어떻게 run메소드를 호출을 하냐면..


ThreadTest의 생성자를 이용하였다.

Instance variable로 Thread 를 선언하고 costructor에서 Thread를 생성했다.


만약 생성자 안에서 

t = new Thread(); 이렇게만 생성하면 코드 실행이 안된다.

왜냐하면 어떤 쓰레드인지 모르기때문이다..


메인 메소드에서 생성했을때도 이 클래스 객체를 아큐먼트로 넘겨 줬다.


그럼 여기서는 어떻게 해야 될까? 당연히 이 클래스의 객체를 넘겨주면 된다. 그것이 바로 this이다..그래서 this를 넣었다. 그럼 잘 돌아간다.


해당 클래스 이름도 쓰레드의 currentThread().getName()메소드를 사용하면 가져 올 수 있다.