1. 쓰레드의 구현과 실행
- Thread클래스를 상속
class MyThread extends Thread {
public void run() { // Thread클래스의 run()을 오버라이딩
...
}
}
MyThread t1 = new MyThread(); // 쓰레드의 생성
t1.start() // 쓰레드의 실행
- Runnable인터페이스를 구현
class MyThread2 implements Runnable {
public void run() { // Runnable인터페이스의 추상메서드 run()을 구현
...
}
}
public interface Runnable { // 구현되어 있음
public abstract void run();
}
Runnable r = new MyThread2();
Thread t2 = new Thread(r); // Thread(Runnable r)
// Thread t2 = new Thread(new MyThread2());
t2.start();
2. 예제
public class Ex01 {
static class MyThread2 extends Thread{
public void run() {
for (int i = 0; i < 500; i++) {
System.out.print(getName());
}
}
}
static class MyThread1 implements Runnable{
public void run() {
for (int i = 0; i < 500; i++) {
System.out.print(Thread.currentThread().getName());
// Thread.currentThread()현재 실행중인 Thread를 반환한다.
}
}
}
public static void main(String[] args) {
MyThread2 t2 = new MyThread2();
Thread t = new Thread(new MyThread1());
t.start(); // 번갈아 가며 실행된다
t2.start();
}
}
3. 쓰레드의 실행 - start()
- 쓰레드를 생성한 후에 start()를 호출해야 쓰레드가 작업을 시작한다.
ThreadEx1_1 t1 = new ThreadEx1_1(); // 쓰레드 t1을 생성한다.
ThreadEx1_1 t2 = new ThreadEx1_1(); // 쓰레드 t2를 생성한다.
t1.start(); // 쓰레드 t1을 실행시킨다. OS스케쥴러가 실행순서 결정
t2.start(); // 쓰레드 t2를 실행시킨다. OS스케쥴러가 실행순서 결정
// 누가 먼저 실행 될지 알 수 없음
'Java' 카테고리의 다른 글
129. 쓰레드의 우선순위, 쓰레드 그룹 - 패스트캠퍼스 백엔드 부트캠프 3기 (2) | 2025.01.06 |
---|---|
128. 싱글쓰레드와 멀티쓰레드, 쓰레드의 I_O블락킹 - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.01.06 |
126. 프로세스와 쓰레드 - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.01.06 |
125. 애너테이션 타입 정의, 요소 - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.01.06 |
124. 메타애너테이션 - 패스트캠퍼스 백엔드 부트캠프 3기 (2) | 2025.01.06 |