Java에서 새 스레드 시작

Mohammad Irfan 2023년10월12일
  1. Java에서 Thread 클래스를 확장하여 스레드 생성
  2. Java에서 Runnable 인터페이스를 구현하여 스레드 생성
  3. Java의 Thread 객체로 스레드 생성
  4. Java에서 익명 클래스를 사용하여 스레드 생성
  5. Java에서 람다 함수를 사용하여 스레드 생성
  6. Java에서 Executors 클래스를 사용하여 스레드 생성
Java에서 새 스레드 시작

이 튜토리얼에서는 Java에서 새 스레드를 시작하는 방법을 소개합니다.

스레드는 실시간으로 실행되고 CPU 사용률을 최대화하는 프로그램/프로세스의 가장 작은 단위입니다.

Java는 스레드 개념을 지원하고 스레드를 생성하여 멀티스레딩 응용 프로그램을 만들 수 있습니다. 이 기사에서는 Java에서 새 스레드를 만드는 방법을 배웁니다.

Java에서 새 스레드를 생성하기 위해 Thread 클래스 또는 Runnable 인터페이스를 사용할 수 있습니다. 몇 가지 예를 살펴보겠습니다.

Java에서 Thread 클래스를 확장하여 스레드 생성

Java에서 Thread는 새 스레드를 생성하는 데 사용되는 클래스이며 여러 유틸리티 메서드를 제공합니다. 이 예제에서는 Thread 클래스를 확장한 다음 start() 메서드를 사용하여 시작하여 사용했습니다. start() 메소드는 새 스레드를 시작합니다. run() 메소드는 새로 생성된 스레드에서 작업을 수행하는 데 사용됩니다. 스레드는 이 메서드를 자동으로 실행합니다. 아래 예를 참조하십시오.

public class SimpleTesting extends Thread {
  public static void main(String[] args) {
    SimpleTesting st = new SimpleTesting();
    st.start();
  }
  public void run() {
    try {
      System.out.println("New Thread Start");
      Thread.sleep(1000);
      System.out.println("Thread sleep for 1 second.");
    } catch (InterruptedException e) {
      System.out.println(e);
    }
  }
}

출력:

New Thread Start
Thread sleep for 1 second.

Java에서 Runnable 인터페이스를 구현하여 스레드 생성

Runnable 인터페이스를 사용하여 새 스레드를 만들 수 있지만 Thread 클래스에서 제공하는 것과 같은 기능을 제공하지 않습니다. 이 인터페이스는 작업을 수행하는 데 사용할 수 있는 run() 메서드를 제공합니다. 아래 예를 참조하십시오.

public class SimpleTesting implements Runnable {
  public static void main(String[] args) {
    SimpleTesting st = new SimpleTesting();
    Thread one = new Thread(st);
    one.start();
  }
  public void run() {
    try {
      System.out.println("New Thread Start");
      Thread.sleep(1000);
      System.out.println("Thread sleep for 1 second.");
    } catch (InterruptedException e) {
      System.out.println(e);
    }
  }
}

출력:

New Thread Start
Thread sleep for 1 second.

Java의 Thread 객체로 스레드 생성

Thread 개체와 start() 메서드를 사용하여 새 스레드를 직접 만들 수 있지만 이 스레드는 run() 메서드 구현을 제공하지 않았기 때문에 어떤 작업도 수행하지 않습니다. getState(), getName() 등과 같은 내장 메소드를 사용하여 스레드 정보를 얻을 수 있습니다. 아래 예를 참조하십시오.

public class SimpleTesting {
  public static void main(String[] args) {
    Thread one = new Thread("New Thread");
    System.out.println("Thread state : " + one.getState());
    one.start();
    System.out.println("Thread state : " + one.getState());
    System.out.println("Thread Name : " + one.getName());
    System.out.println("Thread state : " + one.getState());
  }
}

출력:

Thread state : NEW
Thread state : RUNNABLE
Thread Name : New Thread
Thread state : TERMINATED

Java에서 익명 클래스를 사용하여 스레드 생성

이것은 새 스레드를 만드는 새로운 방법이 아닙니다. Runnable 클래스를 사용하여 익명 클래스를 사용하고 Thread 생성자에 전달하고 스레드를 시작했습니다. 아래 예를 참조하십시오.

public class SimpleTesting {
  public static void main(String[] args) {
    Thread t1 = new Thread(new Runnable() {
      public void run() {
        try {
          System.out.println("New Thread Start");
          Thread.sleep(1000);
          System.out.println("Thread sleep for 1 second.");
        } catch (InterruptedException e) {
          System.out.println(e);
        }
      }
    });
    t1.start();
  }
}

출력:

New Thread Start
Thread sleep for 1 second.

Java에서 람다 함수를 사용하여 스레드 생성

Java에서 익명 클래스를 대체하는 데 사용할 수 있는 Lambda 함수 기능이 Java 8 버전에 추가되었습니다. 여기서는 람다 함수를 사용하여 새 스레드를 생성했습니다. 이것은 스레드를 생성하는 간결하고 짧은 방법입니다. 아래 예를 참조하십시오.

public class SimpleTesting {
  public static void main(String[] args) throws InterruptedException {
    new Thread(() -> {
      try {
        System.out.println("New Thread Start");
        Thread.sleep(1000);
        System.out.println("Thread sleep for 1 second.");
      } catch (InterruptedException e) {
        System.out.println(e);
      }
    }) {
      { start(); }
    }.join();
  }
}

출력:

New Thread Start
Thread sleep for 1 second.

Java에서 Executors 클래스를 사용하여 스레드 생성

Executors는 Java 동시성 패키지에 속하는 클래스이며 멀티스레딩 응용 프로그램을 만드는 데 사용할 수 있습니다. 따라서 이를 사용하여 새 스레드를 생성할 수도 있습니다. newSingleThreadExecutor() 메소드는 새 스레드를 초기화한 다음 submit() 함수에 의해 실행됩니다. 아래 예를 참조하십시오.

import java.util.concurrent.Executors;
public class SimpleTesting {
  public static void main(String[] args) throws InterruptedException {
    Executors.newSingleThreadExecutor().submit(() -> {
      try {
        System.out.println("New Thread Start");
        Thread.sleep(1000);
        System.out.println("Thread sleep for 1 second.");
      } catch (InterruptedException e) {
        System.out.println(e);
      }
    });
  }
}

출력:

New Thread Start
Thread sleep for 1 second.

관련 문장 - Java Threading