JavaTM Platform
Standard Ed. 6

java.util.concurrent
인터페이스 CompletionService<V>

기존의 구현 클래스의 일람:
ExecutorCompletionService


public interface CompletionService<V>

새로운 비동기 태스크의 생성을, 완료필 태스크의 결과의 소비로부터 분리하는 서비스입니다. 프로듀서는, 실행용의 태스크에 대해서 submit 를 실행합니다. 컨슈머(consumer)는, 완료필의 태스크에 take 를 실행해, 결과를 완료한 순서에 처리합니다. 예를 들어,CompletionService 를 사용해, 비동기 입출력을 관리할 수 있습니다. 이 경우, 읽기를 실행하는 태스크는 프로그램 또는 시스템의 일부에 송신되어 읽기의 완료시에 프로그램의 다른 부분에서 처리됩니다. 처리의 순서는, 요구된 순서와는 다른 경우가 있습니다.

일반적으로,CompletionService 에서는, 태스크의 실제의 실행은 다른 Executor 로 행해집니다. 이 경우,CompletionService 는, 내부의 완료 큐만을 관리합니다. ExecutorCompletionService 클래스는, 이 수법의 구현을 제공합니다.

메모리 무결성 효과:태스크를 CompletionService 에 송신하기 전의 thread내의 액션은, 그 태스크에 의해 행해지는 액션보다「전에 발생」해, 한편 그것은, 대응하는 take() 로부터 정상적으로 복귀한 뒤의 액션보다 「전에 발생」합니다.


메소드의 개요
 Future <V > poll ()
          다음의 완료필 태스크를 나타내는 Future 를 취득해 삭제합니다.
 Future <V > poll (long timeout, TimeUnit  unit)
          다음의 완료필 태스크를 나타내는 Future 를 취득해 삭제합니다.
 Future <V > submit (Callable <V > task)
          값을 돌려주는 실행용 태스크를 송신해, 보류 상태의 태스크 결과를 나타내는 Future 를 돌려줍니다.
 Future <V > submit (Runnable  task, V  result)
          실행용의 Runnable 태스크를 송신해, 그 태스크를 나타내는 Future 를 돌려줍니다.
 Future <V > take ()
          다음의 완료필 태스크를 나타내는 Future 를 취득해 삭제합니다.
 

메소드의 상세

submit

Future <V > submit(Callable <V > task)
값을 돌려주는 실행용 태스크를 송신해, 보류 상태의 태스크 결과를 나타내는 Future 를 돌려줍니다. 완료시에, 이 태스크를 꺼낼까 폴링 할 수 있습니다.

파라미터:
task - 송신하는 태스크
반환값:
태스크의 보류 완료를 나타내는 Future
예외:
RejectedExecutionException - 태스크의 실행을 스케줄 할 수 없는 경우
NullPointerException - 태스크가 null 의 경우

submit

Future <V > submit(Runnable  task,
                 V  result)
실행용의 Runnable 태스크를 송신해, 그 태스크를 나타내는 Future 를 돌려줍니다. 완료시에, 이 태스크를 꺼낼까 폴링 할 수 있습니다.

파라미터:
task - 송신하는 태스크
result - 정상적으로 완료했을 경우에 돌려주는 결과
반환값:
태스크의 보류 완료를 나타내는 Future. 그 get() 메소드는, 완료시로 지정된 결과치를 돌려준다
예외:
RejectedExecutionException - 태스크의 실행을 스케줄 할 수 없는 경우
NullPointerException - 태스크가 null 의 경우

take

Future <V > take()
               throws InterruptedException 
다음의 완료필 태스크를 나타내는 Future 를 취득해 삭제합니다. 아무것도 존재하지 않는 경우는 대기합니다.

반환값:
다음의 완료필 태스크를 나타내는 Future
예외:
InterruptedException - 대기중에 인터럽트가 발생했을 경우

poll

Future <V > poll()
다음의 완료필 태스크를 나타내는 Future 를 취득해 삭제합니다. 아무것도 존재하지 않는 경우는 null 를 돌려줍니다.

반환값:
다음의 완료필 태스크를 나타내는 Future. 아무것도 존재하지 않는 경우는 null

poll

Future <V > poll(long timeout,
               TimeUnit  unit)
               throws InterruptedException 
다음의 완료필 태스크를 나타내는 Future 를 취득해 삭제합니다. 아무것도 존재하지 않는 경우는, 필요에 따라서 지정된 대기 시간까지 대기합니다.

파라미터:
timeout - 처리를 중지할 때까지의 대기 시간. 단위는 unit
unit - timeout 파라미터의 해석 방법을 결정하는 TimeUnit
반환값:
다음의 완료필 태스크를 나타내는 Future. 지정된 대기 시간이 경과해도 아무것도 존재하지 않는 경우는 null
예외:
InterruptedException - 대기중에 인터럽트가 발생했을 경우

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.