> Java > java지도 시간 > Java에서 스레드 결과를 얻는 방법은 무엇입니까?

Java에서 스레드 결과를 얻는 방법은 무엇입니까?

WBOY
풀어 주다: 2023-05-10 09:10:07
앞으로
1384명이 탐색했습니다.

1. 개념

Future는 완료되지 않았을 수 있는 비동기 작업의 결과를 나타냅니다. 이 결과를 위해 작업 실행이 성공하거나 실패한 후 해당 작업을 수행하도록 콜백을 추가할 수 있습니다.

2. Future 인터페이스

Future 인터페이스는 RunnableFuture 및 ScheduleFuture가 이 인터페이스를 상속하고 CompleteFuture 및 ForkJoinTask가 이 인터페이스를 상속합니다.

3. 예시

package test;
 
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
 
public class CallableFutureTest {
 
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
Callable<Integer> calculateCallable = new Callable<Integer>() {
@Override
public Integer call() throws Exception {
// TODO Auto-generated method stub
Thread.sleep(2000);//模拟耗时时间
int result = 1+2;
return result;
}
};
FutureTask<Integer> calculateFutureTask = new FutureTask<>(calculateCallable);
Thread t1 = new Thread(calculateFutureTask);
t1.start();
//现在加入Thread运行的是一个模拟远程调用耗时的服务,并且依赖他的计算结果(比如网络计算器)
try {
//模拟耗时任务,主线程做自己的事情,体现多线程的优势
Thread.sleep(3000);
int a = 3+5;
Integer result = calculateFutureTask.get();
System.out.println("result = "+(a+result));//模拟主线程依赖子线程的运行结果
long endTime = System.currentTimeMillis();
System.out.println("time = "+(endTime-startTime)+"ms");
} catch (InterruptedException | ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
로그인 후 복사

위에서 볼 수 있듯이 실제로는 메인 스레드 sleep(3000)에 소요되는 시간입니다. 스레드 결과에 따라 필요할 수 있습니다. 시간은 5초(하위 스레드 2초 + 메인 스레드 3초)가 걸릴 수 있습니다.

위 내용은 Java에서 스레드 결과를 얻는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿