Guava - 병렬 프로그래밍 Futures 상세 정보
Future의 ListenableFuture로 계승하여 리셋 함수를 추가하여 스레드 연산이 끝날 때 값을 되돌려주거나 방법을 실행할 수 있습니다.
ListenableFuture에 콜백 함수를 추가하려면:
Futures.addCallback(ListenableFuture
여기서 Future Callback은 onSuccess(V), onFailure(Throwable)를 포함하는 인터페이스입니다.
사용법:
Futures.addCallback(ListenableFuture, new FutureCallback<Object>() {
public void onSuccess(Object result) {
System.out.printf("onSuccess with: %s%n", result);
}
public void onFailure(Throwable thrown) {
System.out.printf("onFailure %s%n", thrown.getMessage());
}
});
또한 Guava의 Futures for Future 확장은 다음과 같습니다.
@Test
public void should_test_furture() throws Exception {
ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10));
ListenableFuture future1 = service.submit(new Callable<Integer>() {
public Integer call() throws InterruptedException {
Thread.sleep(1000);
System.out.println("call future 1.");
return 1;
}
});
ListenableFuture future2 = service.submit(new Callable<Integer>() {
public Integer call() throws InterruptedException {
Thread.sleep(1000);
System.out.println("call future 2.");
// throw new RuntimeException("----call future 2.");
return 2;
}
});
final ListenableFuture allFutures = Futures.allAsList(future1, future2);
final ListenableFuture transform = Futures.transform(allFutures, new AsyncFunction<List<Integer>, Boolean>() {
@Override
public ListenableFuture apply(List<Integer> results) throws Exception {
return Futures.immediateFuture(String.format("success future:%d", results.size()));
}
});
Futures.addCallback(transform, new FutureCallback<Object>() {
public void onSuccess(Object result) {
System.out.println(result.getClass());
System.out.printf("success with: %s%n", result);
}
public void onFailure(Throwable thrown) {
System.out.printf("onFailure%s%n", thrown.getMessage());
}
});
System.out.println(transform.get());
}
공식 자료 홈페이지:https://awk.so/@code.google.com!/p/guava-libraries/wiki/ListenableFutureExplained 지금까지 Guava - 병렬 프로그래밍 Futures에 대한 자료 정리, 후속 추가 추가 관련 자료 보충, 본 사이트에 대한 지원 감사합니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Guava 소감: RangeGuava 에 새로운 유형의 Range 가 추 가 돼 이름 에서 알 수 있 듯 이 구간 과 관련 된 데이터 구조 다.Google 공식 문서 에서 정의 할 수 있 습 니 다. 이 연속 경 계 는 비교 할 수 있 는 유...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.