작성
·
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에서 자게한 내용을 찾아보실 수 있습니다.