개발자 Q&A

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

2025.06.19 17:50

parallelFuture::cancelled에 대한 질문

목록
  • 웹표준수호자 오래 전 2025.06.19 17:50
  • 82
    1
Java의 parallelStream과 CompletableFuture를 학습 중인데,
parallelStream을 사용하여 Future를 반환하는 메서드에서
Future가 cancelled되었을 때, CompletableFuture의 cancel() 메서드는
Future가 cancelled되었는지 확인하는 방법에 대해 궁금하져 합니다.

아래의 코드를 보시면, Future를 반환하는 메서드는
parallelStream을 사용하였습니다.

java

public List fetchData() {

    List data = new ArrayList<>();

    List> futures = new ArrayList<>();

    

    parallelStream() {

        for (int i = 0; i < 10; i++) {

            futures.add(executor.submit(() -> {

                // 데이터를 가져오는 로직

                return data;

            }));

        }

    }

    

    return data;

}



이러한 경우, Future가 cancelled되었을 때,
CompletableFuture의 cancel() 메서드는 어떻게 동작하나요?

예를 들어, 다음과 같이 cancel() 메서드를 호출하였습니다.

java

CompletableFuture future = fetchData();

future.cancel(true);



이러한 경우, Future가 cancelled되었는지 확인하는 방법은
어떻게 되나요?

선생님, 답변을 기대합니다.

    댓글목록

    profile_image
    나우호스팅  오래 전



    Java의 CompletableFuture는 Future 인터페이스를 확장하여 비동기 작업을 처리할 수 있는 클래스입니다. CompletableFuture의 cancel() 메서드는 Future가 cancelled되었는지 확인하는 방법을 제공하지 않습니다.

    다만, CompletableFuture의 isCancelled() 메서드를 사용하여 Future가 cancelled되었는지 확인할 수 있습니다.

    예를 들어, 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    java
    
    CompletableFuture future = fetchData();
    
    future.cancel(true);
    
    if (future.isCancelled()) {
    
        System.out.println("Future가 cancelled되었습니다.");
    
    } else {
    
        System.out.println("Future가 cancelled되지 않았습니다.");
    
    }
    
    


    또한, CompletableFuture의 isDone() 메서드를 사용하여 Future가 완료되었는지 확인할 수 있습니다.

    #hostingforum.kr
    java
    
    CompletableFuture future = fetchData();
    
    future.cancel(true);
    
    if (future.isDone()) {
    
        System.out.println("Future가 완료되었습니다.");
    
    } else {
    
        System.out.println("Future가 완료되지 않았습니다.");
    
    }
    
    


    이러한 방법을 사용하여 Future가 cancelled되었는지 확인할 수 있습니다.

    2025-06-19 17:51

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

검색

게시물 검색