|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
V
- 이 Future 의 get 메소드로 반환되는 결과형public interface Future<V>
Future 는, 비동기 계산의 결과를 나타냅니다. 계산이 완료했는지 어떠했는지의 체크, 완료까지의 대기, 계산 결과의 취득등을 행하기 위한 메소드가 준비되어 있습니다. 결과는, 계산의 완료시에 get 메소드를 사용해 취득할 필요가 있어, 필요에 따라서 준비를 할 수 있을 때까지 블록 합니다. 취소를 실행하려면 ,cancel 메소드를 사용합니다. 태스크가 정상적으로 완료했는지 삭제되었는지를 판단하기 위한 추가 메소드도 있습니다. 계산이 완료하면(자), 그 계산을 취소할 수 없습니다. 이용 가능한 결과를 얻기 위해서가 아니고, 취소 기능으로서 Future 를 사용하는 경우는,Future<? > 라고 하는 형식의 형태를 선언해, 기본이 되는 태스크의 결과로서 null 를 돌려주도록(듯이) 할 수도 있습니다.
사용예 (다음의 클래스는 모두 가공의 것입니다. )
interface ArchiveSearcher { String search(String target); } class App { ExecutorService executor = ... ArchiveSearcher searcher = ... void showSearch(final String target) throws InterruptedException { Future<String> future = executor.submit(new Callable<String>() { public String call() { return searcher.search(target); }}); displayOtherThings(); // do other things while searching try { displayText(future.get()); // use future } catch (ExecutionException ex) { cleanup(); return; } } }
FutureTask
클래스는,Runnable 를 구현하는 Future 의 구현이며, 그 때문에 Executor 에 의해 실행되는 일이 있습니다. 예를 들어,submit 를 사용한 전술의 구축은, 다음과 같이 옮겨놓을 수 있습니다.
FutureTask<String> future = new FutureTask<String>(new Callable<String>() { public String call() { return searcher.search(target); }}); executor.execute(future);
메모리 무결성 효과:비동기 계산으로 발생하는 액션은, 다른 thread로 대응하는 Future.get()
에 계속되는 액션의「전에 발생」합니다.
FutureTask
,
Executor
메소드의 개요 | |
---|---|
boolean |
cancel (boolean mayInterruptIfRunning)
이 태스크의 실행의 취소를 시도합니다. |
V |
get ()
필요에 따라서 계산이 완료할 때까지 대기해, 그 후, 계산 결과를 가져옵니다. |
V |
get (long timeout,
TimeUnit unit)
필요에 따라서, 최대로 지정된 시간, 계산이 완료할 때까지 대기해, 그 후, 계산 결과가 이용 가능한 경우는 결과를 가져옵니다. |
boolean |
isCancelled ()
이 태스크가 정상적으로 완료하기 전에 삭제되었을 경우는 true 를 돌려줍니다. |
boolean |
isDone ()
이 태스크가 완료했을 경우는 true 를 돌려줍니다. |
메소드의 상세 |
---|
boolean cancel(boolean mayInterruptIfRunning)
이 메소드가 복귀한 뒤, 이후의 isDone()
의 호출에서는 항상 true 가 돌려주어집니다. 이 메소드가 true 를 돌려주었을 경우, 이후의 isCancelled()
의 호출에서는 항상 true 가 돌려주어집니다.
mayInterruptIfRunning
- 이 태스크를 실행하고 있는 thread에 끼어들 필요가 있는 경우는 true, 그렇지 않은 경우는, 실행중의 태스크를 완료할 수 있다
boolean isCancelled()
boolean isDone()
V get() throws InterruptedException , ExecutionException
CancellationException
- 계산이 삭제되었을 경우
ExecutionException
- 계산으로 예외가 throw 되었을 경우
InterruptedException
- 대기중에 현재의 thread로 인터럽트가 발생했을 경우V get(long timeout, TimeUnit unit) throws InterruptedException , ExecutionException , TimeoutException
timeout
- 대기하는 최장 시간unit
- timeout 인수의 시간 단위
CancellationException
- 계산이 삭제되었을 경우
ExecutionException
- 계산으로 예외가 throw 되었을 경우
InterruptedException
- 대기중에 현재의 thread로 인터럽트가 발생했을 경우
TimeoutException
- 대기가 타임 아웃이 되었을 경우
|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.