728x90
반응형
스레드
- 프로세스 내에서 실행되는 작업의 단위
- CPU를 활용해서 여러 작업을 동시에 처리 가능
- Java에서는 스레드를 통해 멀티태스킹 구현 가능
Thead 클래스
- 자바에서 스레드를 직접 생성하는 기본 방법
- Thread를 상속ㅂ다아 run() 메서드를 오버라이드
Runnable 인터페이스
- 스레드 실행 로직을 분리해서 정의하는 방법
- run() 메서드만 구현하면 되고, 더 유연하게 사용 가능 (다중 상속)
public class Task1 {
static class MyThread extends Thread {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("Thread > Hello, Thread!");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
static class MyRunnable implements Runnable {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("Runnable > Hello, Thread!");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) throws InterruptedException {
MyThread thread1 = new MyThread();
Thread thread2 = new Thread(new MyRunnable());
thread1.start();
thread2.start();
// 모든 스레드 끝날때까지 종료
thread1.join();
thread2.join();
System.out.println("모든 스레드 종료");
}
}
// 결과값
Thread > Hello, Thread!
Runnable > Hello, Thread!
Runnable > Hello, Thread!
Thread > Hello, Thread!
Runnable > Hello, Thread!
Thread > Hello, Thread!
Runnable > Hello, Thread!
Thread > Hello, Thread!
Runnable > Hello, Thread!
Thread > Hello, Thread!
Runnable > Hello, Thread!
Thread > Hello, Thread!
Runnable > Hello, Thread!
Thread > Hello, Thread!
Runnable > Hello, Thread!
Thread > Hello, Thread!
Runnable > Hello, Thread!
Thread > Hello, Thread!
Runnable > Hello, Thread!
Thread > Hello, Thread!
모든 스레드 종료
- 스레드 종료 대기 (join) 을 하지 않으면 main 메서드가 바로 끝나버리게 되면 스레드가 다 실행되기 전에 프로그램이 종료될 수 있다.
728x90
반응형
'Language > JAVA' 카테고리의 다른 글
[자바 멀티스레딩] 동기화: synchronized 과 AtomicInteger 사용법 (0) | 2025.03.28 |
---|---|
[자바 멀티스레딩] 스레드 풀: ExecutorService 사용법 (0) | 2025.03.27 |
Null , isEmpty , isBlank 비교 (0) | 2024.03.20 |
[JAVA] 깊은 복사 vs 얕은 복사 (0) | 2023.08.20 |
Optional + orElse 와 orElseGet 메서드 비교 테스트 (0) | 2023.08.15 |
댓글