티스토리 뷰
Multi Thread를 구현하기 위한 run() 메소드는 Runnable 인터페이스가 가지고 있으며, 이 Runnable 인터페이스를 구현받은 Thread 클래스를 이용하여 구현할 수도 있다.
즉, 간단하게 구조를 보면..
run() 메서드: public interface Runnable{
public void run();
}
Thread 클래스: public class Thread implements Runnable{
public Thread(){
}
@Override
public void run() {
}
}
위와 같이 구성되어 있으므로 Thread 클래스를 상속 받거나, Runnable 인터페이스를 구현 받는 방식으로 run() 메서드를 구현할 수 있다는 것이다.
ThreadClass를 상속 받는 간단한 예시를 보면,
○ ThreadClass:
package com.choonham;
public class ThreadClass extends Thread{
public ThreadClass() {
// TODO Auto-generated constructor stub
}
public void run() {
for(int i = 0; i < 100; i++) {
System.out.println("인덱스 : " + i);
}
}
}
○ MainClass:
package com.choonham;
public class MainClass {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("메인 시작");
ThreadClass tc = new ThreadClass();
tc.start(); //run()을 구동
System.out.println("메인 종료");
}
}
위와 같이 구성하여 출력을 확인해보면,
다음과 같이 "메인 시작"과 "메인 종료" 사이에 코드를 작성하여 구동을 시켰지만, 그 순서를 따르지 않고 run()메서드가 따로 실행되는 걸 확인할 수 있다.
그러나, Thread클래스를 상속 받는 것이 아닌 Runnable 인터페이스를 구현 받았을 경우에는 Runnable 인터페이스가 start() 메서드를 가지고 있지 않기 때문에, Main에서 한번 더 Thread를 생성해주어 사용해야한다.
예시를 보면,
○ RunnableClass:
package com.choonham;
public class RunnableClass implements Runnable{
public RunnableClass() {
// TODO Auto-generated constructor stub
}
@Override
public void run() {
System.out.println("Runnable");
}
}
○ MainClass:
package com.choonham;
public class MainClass {
public static void main(String[] args) {
System.out.println("주 스레드 시작");
RunnableClass r = new RunnableClass();
Thread t = new Thread(r);
t.start();
System.out.println("주 스레드 종료");
}
}
매우 중요한 개념이니 알아두도록 하자.
또한, Thread클래스는 private String name 을 변수로 가지고 있으므로, 생성자 부분에 이름을 넣어주면 이름을 붙여서 생성할 수 있다.
이 Thread를 사용한 심화 프로젝트나 추후에 포스팅하도록 하겠다.
이 Thread 에 대한 자세한 예제 코드와 Timer를 활용한 반복 코드는 다음 블로그에서 상세하게 설명하고 있다.
https://raccoonjy.tistory.com/15
'[JAVA] > JAVA' 카테고리의 다른 글
<Thread> Priority 지정하기 (0) | 2021.03.31 |
---|---|
<Thread> Sleep을 이용한 간단한 타이머 구현 (0) | 2021.03.31 |
"웹 개발자 양성과정" 03.24 <Interface & Abstract Class> (0) | 2021.03.25 |
"웹 개발자 양성과정" 03.23 <상속, 접근 제한자 & 문제 풀이> (0) | 2021.03.25 |
[JAVA] Comparable & Comparator (0) | 2021.03.25 |
- 이탈리안 레스토랑
- redux-thunk
- 정보보안기사 #실기 #정리
- javascript
- Promise
- 파니노구스토
- 인천 구월동 맛집
- react-native
- redux
- 인천 구월동 이탈리안 맛집
- await
- 맛집
- Async
- react
- AsyncStorage
- Total
- Today
- Yesterday