• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

thread.sleep질문

22.05.06 11:19 작성 조회수 196

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

DevCali님의 프로필

DevCali

2022.10.05

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

0

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