문서의 이전 판입니다!
executorService.shutdown(); try { if (!executorService.awaitTermination(800, TimeUnit.MILLISECONDS)) { executorService.shutdownNow(); } } catch (InterruptedException e) { executorService.shutdownNow(); }
Executors.newSingleThreadScheduledExecutor()
사용시에는 스케줄이 여러개라도 하나의 스케줄러 쓰레드가 실행한다.scheduleAtFixedRate
는 태스크 시작시간 기준으로 delay를 적용한다. 앞선 스케줄이 여전히 실행중이면 기다렸다가 종료시점에 곧바로 시작한다.scheduleWithFixedDelay
는 태스크 종료시간 기준으로 delay를 적용한다. 앞선 스케줄이 여전히 실행중이면 기다렸다가 종료시점에 delay 시간만큼 기다리고 실행한다.ExecutorService
는 쓰레드 수를 조정할 수 있다. 서로 무관한 독립적인 태스크들을 각각의 쓰레드에서 실행할 때 사용.Future
의 get()
을 호출하지 말것.Future.get()
에 timeout을 적용하여 너무 오래 blocking 하지 않게 할 것.