인프런 커뮤니티 질문&답변

높으면백두산님의 프로필 이미지

작성한 질문수

더 자바, Java 8

CompletableFuture 2

thread.sleep질문

작성

·

281

0

anyof () 실습중에 직접 스레드를 주어서 테스트를 해보고 있는데요, 

main method 에 throws InterruptedException 을 선언해주었음에도 Thread.sleep( ) 을 호출할때 try catch 를 해주어야 하는 이유가 있을까요? 

task 마다 sleep 을 주려하는데, 중복되는 try catch 가 계속해서 발생시키는게 맞는건지 궁금해서 질문드립니다! 

 

public static void main(String[] args) throws ExecutionException, InterruptedException {

 

    CompletableFuture<String> apple = CompletableFuture.supplyAsync(() -> {

      System.out.println("Get Apple Stock " + Thread.currentThread().getName());

      try {

        Thread.sleep(1000);

      } catch (InterruptedException e) {

        throw new RuntimeException(e);

      }

      return "apple $19";

    });

답변 2

0

main method와 supplyAsync 람다식이 같은 스콥이 아니라서 그런 듯 하네요. main method 안에서 Thread.sleep() 사용하면 try / catch 구문 없이도 동작합니다.

0

백기선님의 프로필 이미지
백기선
지식공유자

sleep() 메서드에서 InterruptedException이라는 unchecked excpetion이 발생할 수 있기 때문에 try-catch 블럭을 사용했습니다. 왜 해당 에러가 발생할 수 있는지에 대해서는 sleep() 메서드를 ctrl+클릭하시거나 Javadoc에서 자게한 내용을 찾아보실 수 있습니다.