java에서 thread를 생성하는 방법들을 알아보자
public class HelloThread extends Thread {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + ": run()");
}
}
public class HelloThreadMain {
public static void main(String[] args) {
System.out.println(Thread.currentThread().getName() + ": main()
start");
HelloThread helloThread = new HelloThread();
System.out.println(Thread.currentThread().getName() + ": start() 호출
전");
helloThread.start();
System.out.println(Thread.currentThread().getName() + ": start() 호출
후");
System.out.println(Thread.currentThread().getName() + ": main() end");
}
}
main: main() start
main: start() 호출 전
main: start() 호출 후
Thread-0: run()
main: main() end
```
스레드는 동시에 실행되기 때문에 스레드 간에 실행 순서는 얼마든지 달라질 수 있다. 따라서 다음과 같이 다양한 실행 결과가 나올 수 있다.
main 스레드가 빨리 실행된 경우
main: main() start
main: start() 호출 전
main: start() 호출 후
main: main() end
Thread-0: run()
Thread-0 스레드가 빨리 실행된 경우
main: main() start
main: start() 호출 전
Thread-0: run()
main: start() 호출 후
main: main() end
```
main 스레드가 실행 중간에 Thread-0스레드가 실행된 경우
main: main() thread.start
main: start() 호출 전
main: start() 호출 후
Thread-0: run()
main: main() end
Duration, Period (2) | 2025.06.02 |
---|---|
Instant (1) | 2025.05.23 |
OffsetDateTime (0) | 2025.05.23 |
ZonedDateTime (1) | 2025.05.22 |
Context Switching이란? (0) | 2025.05.16 |
댓글 영역