Java에서 새 스레드 시작
-
Java에서
Thread
클래스를 확장하여 스레드 생성 -
Java에서
Runnable
인터페이스를 구현하여 스레드 생성 -
Java의
Thread
객체로 스레드 생성 - Java에서 익명 클래스를 사용하여 스레드 생성
- Java에서 람다 함수를 사용하여 스레드 생성
-
Java에서
Executors
클래스를 사용하여 스레드 생성
이 튜토리얼에서는 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.