📌 스레드와 멀티 스레드
❓ 멀티 스레드
하나의 프로세스 내에서 여러개의 스레드를 동시에 작업을 수행하는 것을 말한다.
❓ 스레드
프로세스 내에서 실제로 작업을 수행하는 최소 단위이며, 각 스레드는 독립적인 실행 흐름을 가진다.
📖 멀티 스레드 사용법
자바에서 멀티스레드를 사용하는 방법은 2가지가 있다.
- Thread를 상속받는 방법
- Runnable 인터페이스를 구현하는 방법
1️⃣ Thread를 상속받는 방법
⚠️ 자바는 다중상속을 지원하지 않아서, Thread를 상속받으면 다른 클래스를 상속 받을 수 없다.
- 자바에서 스레드를 생성하는 가장 기본적인 방법은, Thread 클래스를 상속받는 것이다.
- 상속받은 Thread 클래스의 run() 메소드를 오버라이드(재정의)한다.
- start() 메서드가 실제 수행 흐름을 만들어내는 일을 하고, 준비가 되면 run()을 호출하는 방식으로 사용한다.
- 사용방법은 아래와 같다.
public class MyThread extends Thread{
@Override
public void run(){
System.out.println("MyThread 출발");
for(int i=0;i<100;i++){
System.out.println("MyThread " + i);
}
System.out.println("MyThread 종료");
}
}
public class ThreadTest{
//스레드 생성
MyThread myThread = new MyThread();
//run을 직접 호출하지 않는다.
//myThread.run();
//start()라는 메서드가 실제 수행 흐름을 하나 만들어내는 일을 하고, 준비가 되면 run()호출
myThread.start();
}
2️⃣ Runnable 인터페이스를 구현하는 방법
⚠️ Runnable은 스레드 그 자체가 아니고, 작업을 정의하는 인터페이스이다. 간단하게 스레드에서 실행할 코드를 담고 있는 설계도라고 생각하면 된다.
- Runnable 인터페이스는 run() 메서드만을 재정의한다. 그 후 혼자서 실행하기 힘들기 때문에 객체를 Thread 객체에 전달하여 스레드를 생성한다.
- 결론은 Runnable은 Thread의 도움을 받아야 한다는것!!
public class RunnableTest {
MyRunnable runnable = new MyRunnable();
Thread thread = new Thread(runnable) ;
//또는 아래처럼도 사용 가능
Thread thread = new Thread(new MyRunnable());
}
'JAVA' 카테고리의 다른 글
[ java ] 인터페이스 (다중구현, static, default) (0) | 2025.03.31 |
---|---|
[ java ] Optional 이란? (0) | 2025.01.20 |
[ java ] 생성자, 생성자 오버로딩 (0) | 2024.12.10 |
[ java ] 추상클래스 (0) | 2024.12.10 |
[ java ]Constant Pool과 String Constant Pool (0) | 2024.12.10 |