- Thread 구현 방법
- Runnable 인터페이스
- 상위 클래스를 Thread로 할 수 없을 경우
- Callabe 인터페이스
- 상위 클래스를 Thread로 할 수 없을 경우
- 쓰레드의 결과 값을 리턴 받길 원할 경우
- FutureTask<R>를 이용해 생성한 후 쓰레드에 할당
- FutureTask
- FutureTask get()으로 Callable의 call()메소드가 호출되어 결과가 리턴되길 기다림
- Callable로 구현된 call() 함수를 모니터링하는 역할을 담당
- cancel(), done(), isCancelled(), isDone()
- Thread Pool을 이용한 방법
- ExecutorService
- newFixedThreadPool(n : Int)
- n개의 Thread를 만든다
- 보통 해당 머신의 CPU 코어 개수만큼 만드는 것이 좋다
- newCachedThreadPool()
- Thread를 필요하다면 계속 생성
- 60초 후 사용되지 않는 Thread를 제거
- newScheduledThreadPool(int)
- 주기적으로 실행되어야 하는 Thread가 필요할 때 사용 ex) 시계
- newSingleThreadExecutor()
- 하나의 Thread 만을 이용하여 작업해야 할 때 사용
- newFixedThreadPool(n : Int)
- ExecutorService를 이용한 Task 작업 및 종료
- execute()
- return type이 존재하지 않는다.
- submit()
- return type이 존재할 때
- 보통 Callable를 구현한 Task에 작업을 시킬 때 사용
- invokeAny()
- return을 Collection으로 리턴 하나 성공한 Task 하나에 대해서만 값을 리턴
- invokeAll()
- 성공한 모든 Task에 대하여 Collection 으로 리턴
- 보통 List<FutureTask<R>> 타입으로 리턴
- 종료시
- shutdown(), shutdown(Task), shutdownNow(), awaitTermination()
- execute()
- ExecutorService
- Runnable 인터페이스
'Kotlin' 카테고리의 다른 글
Kotlin이란(19) (0) | 2023.09.06 |
---|---|
Kotlin이란(18) (1) | 2023.09.06 |
Kotlin이란(16) (0) | 2023.09.06 |
Kotlin이란(15) (0) | 2023.09.06 |
Kotlin이란(14) (0) | 2023.09.06 |