Heim >Java >javaLernprogramm >Wie erhalte ich in Java das Ergebnis eines Threads?

Wie erhalte ich in Java das Ergebnis eines Threads?

WBOY
WBOYnach vorne
2023-05-10 09:10:071388Durchsuche

1. Konzept

Zukunft stellt das Ergebnis einer asynchronen Aufgabe dar, die möglicherweise noch nicht abgeschlossen ist. Für dieses Ergebnis kann ein Rückruf hinzugefügt werden Die Aufgabenausführung ist erfolgreich oder schlägt fehl. Ergreifen Sie die entsprechenden Maßnahmen.

2. Future-Schnittstelle

Die Future-Schnittstelle definiert fünf Hauptschnittstellenmethoden, einschließlich RunnableFuture und ScheduleFuture, die diese Schnittstelle erben CompleteFuture und ForkJoinTask erben diese Schnittstelle.

3. Beispiel

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();
}
}
}

Sie können sehen, dass der oben genannte Zeitaufwand etwa 3 Sekunden beträgt verursacht durch den Haupt-Thread Sleep(3000) Die aufgewendete Zeit. Wenn wir Future nicht verwenden und uns auf die Ergebnisse von Threads verlassen, kann die benötigte Zeit 5 Sekunden betragen (2 Sekunden für den Unter-Thread + 3 Sekunden für den Haupt-Thread).

Das obige ist der detaillierte Inhalt vonWie erhalte ich in Java das Ergebnis eines Threads?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen