자바에서 스레드는 어떻게 생성하나요?

자바에서 스레드(Thread)를 생성하는 방법은 주로 두 가지가 있습니다.

스레드는 프로그램 내에서 동시에 여러 작업을 수행할 수 있게 해주는 실행 단위입니다.

자바에서는 기본적으로 java.lang.Thread 클래스를 사용하며, Runnable 인터페이스를 구현하는 방식으로 스레드를 생성합니다.

1. Thread 클래스를 상속받아 생성하기 - 새 클래스를 만들고 java.lang.Thread 클래스를 상속받습니다.

- run() 메서드를 오버라이드하여 스레드가 수행할 작업을 정의합니다.

- 인스턴스를 생성한 후 start() 메서드를 호출하여 스레드를 실행합니다.

```java class MyThread extends Thread { @Override public void run() { System.out.println("스레드가 실행 중입니다.

"); } } public class Main { public static void main(String[] args) { MyThread thread = new MyThread(); thread.start(); // run() 메서드가 새로운 스레드에서 실행됨 } } ``` 2. Runnable 인터페이스 구현하기 - Runnable 인터페이스의 run() 메서드를 구현한 클래스를 작성합니다.

- Thread 클래스 생성자의 인자로 해당 Runnable 객체를 전달합니다.

- Thread 인스턴스에서 start() 메서드를 호출하여 스레드를 실행합니다.

```java class MyRunnable implements Runnable { @Override public void run() { System.out.println("Runnable 스레드가 실행 중입니다.

"); } } public class Main { public static void main(String[] args) { Thread thread = new Thread(new MyRunnable()); thread.start(); } } ``` 참고 사항 - 직접 run() 메서드를 호출하면 새로운 스레드가 생성되지 않고 호출한 현재 스레드 내에서 실행됩니다.

따라서 반드시 start() 메서드를 호출해야 합니다.

- Runnable 인터페이스를 사용하는 방법은 다중 상속이 불가능한 자바에서 다른 클래스를 상속받으면서 동시에 스레드를 생성하고자 할 때 유용합니다.

- 자바 8 이후에는 람다 표현식을 이용하여 Runnable 인터페이스를 보다 간결하게 작성할 수도 있습니다.

```java public class Main { public static void main(String[] args) { Thread thread = new Thread(() -> { System.out.println("람다로 생성된 스레드 실행 중"); }); thread.start(); } } ``` 이처럼 자바에서는 Thread 클래스를 직접 상속하거나 Runnable 인터페이스를 구현하여 스레드를 생성하고, start() 호출로 실행시킬 수 있습니다.


관련 게시글

자바에서 병렬 처리를 구현하는 방법은 무엇인가요?

자바에서 병렬 처리는 여러 작업을 동시에 실행하여 프로그램의 성능과 응답성을 향상시키는 기법입니다....

문제 해결 및 면접 질문

문제 해결 및 면접 질문에 관한 글 --- 1. 문제 해결의 중요성 문제 해결 능력은 개인과...

자바에서 중복된 요소를 제거하는 방법은 무엇인가요?

자바(Java)에서 중복된 요소를 제거하는 방법에는 여러 가지가 있습니다. 주로 컬렉션프레임워크를 활용하...

자바 Collections에서 정렬하는 방법은 무엇인가요?

자바 Collections에서 정렬하는 방법에 대해 설명드리겠습니다. 자바에서는 컬렉션(Collection) 자료구조의...

자바의 메모리 누수 문제를 해결하는 방법은 무엇인가요?

자바의 메모리 누수 문제를 해결하는 방법 --- 1. 메모리 누수란? 자바는 가비지 컬렉션(GC)...

팩토리 패턴을 사용하여 주어진 문제를 해결해보세요.

팩토리 패턴을 사용하여 주어진 문제를 해결해보세요. --- 1. 팩토리 패턴이란? 팩토리 패턴...