스레드를 만드는 방법 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 상태 전이도

 

+ Recent posts