您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“JUC線程如何實(shí)現(xiàn)Callable接口”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“JUC線程如何實(shí)現(xiàn)Callable接口”吧!
Java 5.0 在 java.util.concurrent 提供了一個(gè)新的創(chuàng)建執(zhí)行線程的方式:Callable 接口
Callable 接口類似于 Runnable,兩者都是為那些其實(shí)例可 能被另一個(gè)線程執(zhí)行的類設(shè)計(jì)的。但是 Runnable 不會(huì)返 回結(jié)果,并且無法拋出經(jīng)過檢查的異常。
Callable 需要依賴FutureTask ,F(xiàn)utureTask 也可以用作閉鎖
package com.gf.demo;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
/**
* 一、創(chuàng)建線程的方式三:實(shí)現(xiàn)Callable接口。相較于實(shí)現(xiàn) Runnable 接口的方式,方法可以有返回值,并且可以拋出異常。
*
* 二、執(zhí)行Callable 方式,需要FutureTask 實(shí)現(xiàn)類的支持,用于接受運(yùn)算結(jié)果。FutureTask 是Future接口的實(shí)現(xiàn)類
*
*/
public class TestCallable {
public static void main(String args[]){
ThreadDemo td = new ThreadDemo();
FutureTask<Integer> result = new FutureTask<>(td);
new Thread( result ).start();
try {
Integer sum = result.get();
System.out.println(sum);
System.out.println("--------------------------------");
} catch (ExecutionException | InterruptedException e) {
e.printStackTrace();
}
}}
class ThreadDemo implements Callable<Integer> {
@Override
public Integer call() throws Exception {
int num = 0;
for (int i = 0 ; i < Integer.MAX_VALUE ; i++) {
num = num + i;
}
return num;
}
}
到此,相信大家對(duì)“JUC線程如何實(shí)現(xiàn)Callable接口”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。