스레드를 만드는 방법 2가지
1. Thread Class로 직접 생성, runnable interface 사용
- Runnable : 작업 스레드가 실행할 수 있는 코드를 가지고 있는 객체
- Runnable은 Interface Type -> 구현 객체 필요
- Runnable 내부에 있는 run() 메소드를 구현 클래스에서 run()을 Override를 통해 작업 스레드가 실행할 코드를 작성해야 한다.
- Runnable r = new 구현 객체 생성 후, new Thread(r) 구현 객체를 Thread 생성자의 매개 값으로 넣어주면 작업 스레드가 생성
- 생성된 스레드는 바로 실행되지 않고, thread.start()와 같이 start 메소드를 호출해야 실행된다.
- instance를 만들어서 객체를 Thread Class의 인자로 넣어준다.


2. Thread 하위 클래스로부터 생성
- Thread 하위 클래스로 작업 스레드를 정의하면서 작업 내용 포함
- Thread Class 상속 후, run()을 Override를 통해 작업 스레드가 실행할 코드를 작성한다.
- 생성된 객체에서 start() 메소드를 호출 -> run() 메소드 실행
- IS-A Relationship
- Java(단일 상속 지원)는 다중 상속 X -> Thread Class를 extends할 경우 제약이 생길 수 있다.
- Tightly Coupled 문제가 생길 수 있다.

- Main class가 실행 되면서, 메인 스레드가 생성
- Thread 객체를 생성하고, start() 메소드로 호출하면, 내부적으로 Thread stack을 할당받고, run() 호출


Thread의 이름
- 메인 스레드 : main
- 직접 생성한 스레드 : Thread-n // n은 스레드의 번호
- setName(), getName()
- Thread.currentThread() : 객체의 참조가 없는 경우 사용

Thread 상태 전이도

'프로그래밍 > JAVA' 카테고리의 다른 글
[Java] JDBC(Java Database Connectivity), Connection pool (0) | 2022.07.21 |
---|---|
[Java] 스레드 상태 제어 - sleep, join, yield, interrupt (0) | 2022.07.17 |
[Java] 스레드 풀(ThreadPool) (0) | 2022.07.17 |
[Java] 스레드의 동기화 synchronized (0) | 2022.07.17 |
[JAVA] 스레드 vs 프로세스, 동시성 vs 병렬성, 데몬 스레드 (0) | 2022.07.14 |