안녕하세요 오늘은 스레드(Thread) 2편입니다.
지난번 시간에 스레드란? 에서 Runnable로 스레드를 만들어 보았는데요.
지난 시간 내용입니다 :)
오늘은 Thread를 하위 클래스로부터 생성해 보겠습니다.
작업 스레드가 실행할 작업을 Runnable로 만들지 않고, Thread의 하위 클래스로 작업 스레드를 정의하면서 작업 내용을 포함시킬 수 있습니다.
Thread 클래스를 상속한 후 run() 메서드를 재정의(Overriding)해서 스레드가 실행할 코드를 작성하면 됩니다.
public class ThreadTest extends Thread{
@Override
public void run() {
// 스레드가 실행할 코드
System.out.println("Thread 2초마다 실행");
for (int i = 6; i <= 10; i++){
try{
System.out.println(i);
Thread.sleep(2000);
}catch (Exception e){}
}
}
}
코드를 좀 더 절약하고싶으면 Thread 악명 객체로 작업 스레드 객체를 생성할 수도 있습니다.
Thread thread = new Thread() {
public void run() {
// 스레드가 실행할 코드
System.out.println("Thread 2초마다 실행");
for (int i = 6; i <= 10; i++){
try{
System.out.println(i);
Thread.sleep(2000);
}catch (Exception e){}
}
}
};
이렇게 생성된 작업 스레드 객체에서 start() 메서드를 호출하면 작업 스레드는 자신의 run() 메서드를 실행하게 된다.
thread.start();
다음 ThreadTest class는 Thread를 상속받아 run() 함수를 Override(재정의) 하여 6~10까지 2초마다 찍어줄 거예요.
public class ThreadTest extends Thread{
@Override
public void run() {
// 스레드가 실행할 코드
System.out.println("Thread 2초마다 실행");
for (int i = 6; i <= 10; i++){
try{
System.out.println(i);
Thread.sleep(2000);
}catch (Exception e){}
}
}
}
이제 ThreadTest 클래스를 이용해 작업 스레드 객체를 생성하고 실행을 해 보겠습니다.
public class ThreadTestExample {
public static void main(String[] args) {
Thread thread = new ThreadTest();
thread.start();
System.out.println("main Thread 바로 실행");
for (int i = 1; i<= 5; i++){
System.out.println(i);
}
}
}
main 스레드가 먼저 실행이 되고 스레드가 실행이 됩니다.
그러면 1 2 3 4 5 가 먼저 출력이 된 후 6 ~ 10 까지는 2초 간격으로 출력이 됩니다.
오늘은 Runnable 이외의 방법을 공부해 보았는데요 어떤 게 편하신가요?
편하신 걸 사용하시면 좋을 것 같습니다!
공부하시는데 조금이나마 도움이 되길 바라겠습니다.
감사합니다.
참고 : 혼자 공부하는 자바
'Android > java' 카테고리의 다른 글
스레드 (Thread) - 동기화 메소드 (2) (0) | 2021.02.24 |
---|---|
스레드 (Thread) - 동기화 메소드 (1) (0) | 2021.02.23 |
스레드 (Thread) 란? (0) | 2021.02.18 |
상수 (0) | 2019.03.29 |
문장 출력과 변수 (0) | 2019.03.29 |