minuco

안녕하세요 오늘은 스레드(Thread) 2편입니다.

 

지난번 시간에 스레드란? 에서 Runnable로 스레드를 만들어 보았는데요.

 

지난 시간 내용입니다 :)

 

스레드 (Thread) 란?

우선 스레드를 공부하기 전 알고 넘어가야 할 개념이 있는데 프로세스(process)입니다. 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 메모리를 할당받아 시행되는데, 이것을 프로세스

itminco.tistory.com

오늘은 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
profile

minuco

@minuco

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!