> 스레드 thread
멀티스레드 - 두 가지 작업을 동시에 처리하는 것
한 프로그램 안에서 멀티태스킹을 동시에 하는 애플리케이션도 있음 (ex. 메신저)
스레드 - 프로그램의 실행흐름 (프로그램 내 스레드가 2개 → 두 개의 코드 흐름이 생긴다는 뜻)
< How to use? >
방법1
Runnable 인터페이스를 상속받아 추상메소드 run() 을 오버라이딩
→ Thread 객체의 생성자의 매개값으로 전달
→ start() 메소드를 통해 실행시킴
방법2
Thread 클래스를 상속받아 추상메소드 run() 을 오버라이딩
→ Thread 객체의 생성자의 매개값으로 전달
→ start() 메소드를 통해 실행시킴
차이점
방법1 - Runnable 은 인터페이스, 스레드 실행의 기능만 정의되어있음 → 클래스 내부에서 사용가능한 메소드 한정적
(단, 스레드의 static 메소드는 전부 사용 가능)
방법2 - Thread 클래스의 기능을 전부 받아서 사용할 수 있음
- 스레드 기본 메소드 -
1) start(): 스레드 클래스를 진행
2) (static) currentThread(): 현재 스레드를 반환
3) getName(): 스레드 이름 반환
4) (static) sleep(): 스레드를 잠시 멈춤
5) yield(): 스레드 실행을 다른 스레드에게 양보
6) join(): 해당 스레드를 우선 실행
* 스레드가 사용중인 객체를 다른 스레드가 변경할 수 없도록 하기 → 메소드의 선언에 synchronized 작성
ex. public synchronized void run(){ }
- synchronized 가 선언되면 해당 객체가 사용될 때 다른 곳에서 호출할 수 없음
'course 2021 > JAVA' 카테고리의 다른 글
day22 - lambda expression (0) | 2021.09.27 |
---|---|
day21 - regular expression (0) | 2021.09.27 |
day20 - API(3) stream (0) | 2021.09.26 |
day19 - API(2) generic, collection (0) | 2021.09.22 |
day18 - API(1) java.lang, java.util (0) | 2021.09.15 |