Thread[Java]

SnowCat·2023년 6월 8일
0

Java - Language

목록 보기
15/17
post-thumbnail

스레드의 생성과 실행

  • 자바에서 스레드를 구현하기 위해서는 Runable 인터페이스를 구현하거나, Thread 클래스를 상속받으면 됨
  • 이후 두 방법 모두 스레드를 통해 작업하고 싶은 내용을 run() 메서드에 작성함
    Thread 클래스 상속시 다른 클래스 상속이 불가능하기 때문에 Runnable 인터페이스를 구현하는쪽을 많이 사용함
class ThreadWithClass extends Thread {
    public void run() {
        for (int i = 0; i < 5; i++) {
            System.out.println(getName()); // 스레드 이름 출력
            try {
                Thread.sleep(10);          // 10ms동안 스레드 정지
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

class ThreadWithRunnable implements Runnable {
    public void run() {
        for (int i = 0; i < 5; i++) {
            System.out.println(Thread.currentThread().getName());
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
public class Thread01 {
    public static void main(String[] args){
        ThreadWithClass thread1 = new ThreadWithClass();       // Thread 클래스를 상속받는 방법
        Thread thread2 = new Thread(new ThreadWithRunnable()); // Runnable 인터페이스를 구현하는 방법
        thread2.setPriority(10); // 스레드의 우선순위 설정
        thread1.start();
        thread2.start();
    }
}

스레드 그룹

  • 스레드 그룹은 서로 관련이 있는 스레드를 하나의 그룹으로 묶어 다루기 위한 장치를 의미함
  • 자바에서는 스레드 그룹을 다루기 위해 ThreadGroup이라는 클래스를 제공함
  • 스레드 그룹은 트리 형태로 연결되며, 자신과 자신의 child 스레드 그룹에만 접근 가능함
class ThreadWithRunnable implements Runnable {
    public void run() {
        try {
            Thread.sleep(10);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

 

public class Thread03 {
    public static void main(String[] args){
        Thread thread0 = new Thread(new ThreadWithRunnable());
        thread0.start();
        System.out.println(thread0.getThreadGroup()); // java.lang.ThreadGroup[name=main,maxpri=10]
        ThreadGroup group = new ThreadGroup("myThread");
        group.setMaxPriority(7); // 최대 우선순위 설정

        // 스레드 그룹을 지정해 새로운 스레드 생성
        Thread thread1 = new Thread(group, new ThreadWithRunnable());
        thread1.start();
        System.out.println(thread1.getThreadGroup()); // java.lang.ThreadGroup[name=myThread,maxpri=7]
    }
}

데몬 스레드

  • 데몬 스레드는 다른 일반 스레드의 작업을 보조적인 역할을 하는 스레드를 의미함
  • 일반 스레드가 종료되면 데몬 스레드도 같이 종료됨
  • 데몬 스레드의 생성, 실행 방법은 일반 스레드와 같지만, 실행 전 setDaemon() 메서드를 사용해 데몬 스레드로 설정을 해야 함
  • 데몬 스레드의 대표적인 예시로는 가비지 컬렉터가 있음

출처:
tcpschool.com/java/java_thread_concept

profile
냐아아아아아아아아앙

0개의 댓글