Rumah > Java > javaTutorial > teks badan

Di Jawa, bagaimana untuk mendapatkan hasil thread?

WBOY
Lepaskan: 2023-05-10 09:10:07
ke hadapan
1361 orang telah melayarinya

1. Konsep

Masa hadapan mewakili hasil tugasan tak segerak yang mungkin belum selesai Panggilan Balik boleh ditambahkan pada hasil ini untuk melaksanakan operasi yang sepadan selepas pelaksanaan tugasan berjaya atau gagal.

2. Antara muka Masa Depan

Antara muka Masa Depan mentakrifkan lima kaedah antara muka utama dan ScheduledFuture mewarisi antara muka ini, dan CompleteFuture dan ForkJoinTask mewarisi antara muka ini.

3. Contoh

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();
}
}
}
Salin selepas log masuk

Seperti yang anda boleh lihat dari di atas, ia mengambil masa kira-kira 3 saat, terutamanya masa yang dihabiskan oleh tidur utas utama (3000) Jika tidak Menggunakan Masa Depan dan bergantung pada hasil benang, masa yang kita perlukan mungkin 5s (2s untuk sub-benang + 3s untuk utas utama).

Atas ialah kandungan terperinci Di Jawa, bagaimana untuk mendapatkan hasil thread?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan