반응형
자바에서 완성 된 미래를 만드는 방법
Java로 완성 된 미래를 구성하는 가장 좋은 방법은 무엇입니까? 나는 CompletedFuture
아래에서 내 자신을 구현 했지만 이미 존재하는 이와 같은 것을 바라고있었습니다.
public class CompletedFuture<T> implements Future<T> {
private final T result;
public CompletedFuture(final T result) {
this.result = result;
}
@Override
public boolean cancel(final boolean b) {
return false;
}
@Override
public boolean isCancelled() {
return false;
}
@Override
public boolean isDone() {
return true;
}
@Override
public T get() throws InterruptedException, ExecutionException {
return this.result;
}
@Override
public T get(final long l, final TimeUnit timeUnit) throws InterruptedException, ExecutionException, TimeoutException {
return get();
}
}
Apache Commons Lang은 ConstantFuture라는 유사한 구현을 정의합니다. 다음을 호출하여 가져올 수 있습니다.
Future<T> future = ConcurrentUtils.constantFuture(T myValue);
Java 8에서는 내장 CompletableFuture를 사용할 수 있습니다.
Future future = CompletableFuture.completedFuture(value);
Guava 는 Futures.immediateFuture(value)
작업을 수행하는을 정의합니다 .
FutureTask<String> ft = new FutureTask<>(() -> "foo");
ft.run();
System.out.println(ft.get());
"foo"를 출력합니다.
get ()이 호출 될 때 예외를 발생시키는 Future를 가질 수도 있습니다.
FutureTask<String> ft = new FutureTask<>(() -> {throw new RuntimeException("exception!");});
ft.run();
Java rt.jar에서 귀하와 매우 유사한 클래스를 찾았습니다.
com.sun.xml.internal.ws.util.CompletedFuture
또한 get ()이 호출 될 때 발생할 수있는 예외를 지정할 수 있습니다. 예외를 throw하지 않으려면 null로 설정하십시오.
Java 6에서는 다음을 사용할 수 있습니다.
Promise<T> p = new Promise<T>();
p.resolve(value);
return p.getFuture();
참고URL : https://stackoverflow.com/questions/13866533/how-to-create-a-completed-future-in-java
반응형
'developer tip' 카테고리의 다른 글
git commit 주석을 래핑하는 방법은 무엇입니까? (0) | 2020.11.10 |
---|---|
PHP 변수 제거, 공백을 대시로 대체 (0) | 2020.11.09 |
모델을 가져올 때 1을 true로 또는 0을 false로 변환하는 방법 (0) | 2020.11.09 |
개인 텔레 그램 채널의 chat_id를 얻는 방법은 무엇입니까? (0) | 2020.11.09 |
MacOS 앱이 Xcode 시뮬레이터에서 실행되지 않습니다. (0) | 2020.11.09 |