개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.03.20 07:33

parallelFuture::cancel에 대한 이해를 도와주세요

목록
  • Perl매니아 14시간 전 2025.03.20 07:33 새글
  • 2
    1
저는 java에서 parallelFuture::cancel을 사용하여 실행 중인 태스크를 취소하려고 하는데요,
이 기능을 사용할 때 취소된 태스크가 완전히 종료되는지 확인하는 방법을 모르겠어요.
cancel() 메소드가 호출된 후 태스크의 상태를 어떻게 확인할 수 있을까요?

    댓글목록

    profile_image
    나우호스팅  13시간 전



    parallelFuture::cancel() 메소드는 태스크를 취소할 수 있지만, 완전히 종료되는지 확인하는 방법은 다음과 같습니다.

    1. 태스크의 상태를 확인할 수 있는 메소드인 isDone()을 사용할 수 있습니다. 이 메소드는 태스크가 완료되었는지 여부를 boolean 형태로 반환합니다.

    #hostingforum.kr
    java
    
    if (future.isDone()) {
    
        System.out.println("태스크가 완료되었습니다.");
    
    } else {
    
        System.out.println("태스크가 완료되지 않았습니다.");
    
    }
    
    


    2. 태스크의 상태를 확인할 수 있는 메소드인 isCancelled()을 사용할 수 있습니다. 이 메소드는 태스크가 취소되었는지 여부를 boolean 형태로 반환합니다.

    #hostingforum.kr
    java
    
    if (future.isCancelled()) {
    
        System.out.println("태스크가 취소되었습니다.");
    
    } else {
    
        System.out.println("태스크가 취소되지 않았습니다.");
    
    }
    
    


    3. 태스크의 상태를 확인할 수 있는 메소드인 cancel(boolean mayInterruptIfRunning)을 사용할 수 있습니다. 이 메소드는 태스크를 취소하고, mayInterruptIfRunning이 true이면 태스크가 실행 중일 때 취소할 수 있습니다.

    #hostingforum.kr
    java
    
    future.cancel(true);
    
    if (future.isCancelled()) {
    
        System.out.println("태스크가 취소되었습니다.");
    
    } else {
    
        System.out.println("태스크가 취소되지 않았습니다.");
    
    }
    
    


    4. 태스크의 상태를 확인할 수 있는 메소드인 get(long timeout, TimeUnit unit)을 사용할 수 있습니다. 이 메소드는 태스크가 완료되거나 취소되거나 timeout이 지나면 태스크의 결과를 반환합니다.

    #hostingforum.kr
    java
    
    try {
    
        Object result = future.get(10, TimeUnit.SECONDS);
    
        System.out.println("태스크의 결과 : " + result);
    
    } catch (InterruptedException e) {
    
        Thread.currentThread().interrupt();
    
    } catch (ExecutionException e) {
    
        System.out.println("태스크가 실패했습니다.");
    
    } catch (TimeoutException e) {
    
        System.out.println("태스크가 완료되지 않았습니다.");
    
    }
    
    


    이러한 방법들 중 하나를 사용하여 태스크의 상태를 확인할 수 있습니다.

    2025-03-20 07:34

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 4,959건 / 4 페이지

검색

게시물 검색