Programing Language/JAVA

JAVA Thread 구현하기

칼쵸쵸 2021. 2. 25. 20:53

Extends Thread

기본적인 방법

Thread 객체를 상속받아 Run메서드를 오버라이딩 하여 사용

상속받은 객체 인스턴스를 생성하고 start 메서드를 실행하면 Run 메서드의 내용이 실행됨

Thread를 상속 받아야 하기 때문에 다른 클래스를 상속 받아서 사용할 수 없음

 

public class ExThread1 extends Thread{
    @Override
    public void run() {
        try {
            Thread.sleep(1000);
            System.out.println(Thread.currentThread().getName());
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
public class Main {
    public static void main(String args[])
    {
        ExThread1 ex1 = new ExThread1();
        ex1.start();
        System.out.println(Thread.currentThread().getName());
        //Ex1 의 쓰레드 이름을 나중에 출력하고 현재 메인 쓰레드의 이름을 먼저 출력
    }
}

 

Runnable 인터페이스 implements

Runnable을 구현한 객체를 생성

Thread 객체를 따로 생성하고 생성자를 통해 Runnable 객체를 전달

Thread 객체를 start 하여 쓰레드 동작

다른 클래스를 상속 가능

 

public class ExThread2 implements Runnable{
    @Override
    public void run() {
        try {
            Thread.sleep(1000);
            System.out.println(Thread.currentThread().getName());
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
public class Main {
    public static void main(String args[])
    {
        ExThread2 ex2 = new ExThread2();
        Thread thread = new Thread(ex2);
        thread.start();
        System.out.println(Thread.currentThread().getName());
        //자식 쓰레드 이름을 나중에 출력하고 현재 메인 쓰레드의 이름을 먼저 출력
    }
}