一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

Callable接口介紹 Runnable和Callable的區(qū)別

454398 ? 來源:chinaunix ? 作者:zmy愛吃炸雞 ? 2020-10-16 11:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Callable接口:

Callable,新啟線程的一種方式,返回結果并且可能拋出異常的任務,在前面的新啟線程的文章中用過,但是沒有具體講解

優(yōu)點:

可以獲取線程的執(zhí)行結果,也稱為返回值

通過與Future的結合,可以實現(xiàn)利用Future來跟蹤異步計算的結果

Runnable和Callable的區(qū)別:

Callable規(guī)定的方法是call(),Runnable規(guī)定的接口是run();

Callable的任務執(zhí)行后可返回值,而Runnable的任務是不能有返回值的;

call方法可以拋出異常,run方法不可以

運行Callable任務可以拿到一個Future對象,表示異步計算的結果,它提供了檢查是否計算完成的方法,以等待計算的完成,并檢索計算的結果,通過Future對象可以了解任務執(zhí)行情況,可以取消任務的執(zhí)行,還可以獲取執(zhí)行結果

Future接口:

Future是一個接口,代表了一個異步計算的結果,接口中的方法用來檢查計算是否完成,等待完成和得到計算結果;

當計算完成后,只能通過get()方法得到結果,get()方法會阻塞,一直到線程的計算結果完成并返回;

如果想取消,那么調(diào)用cancel()方法,其他方法用于確定任務是正常完成還是取消了;

一旦計算完成了,那么這個計算就不能被取消

FutureTask類:

FutureTask類實現(xiàn)了RunnableFuture接口,而RunnableFuture接口是繼承了Runnable和Future接口,所以說FutureTask是一個提供異步計算結果的任務;

FutureTask可以用來包裝Callable或者Runnable接口的實現(xiàn)對象,因為FutureTask實現(xiàn)了Runnable接口,所以FutureTask也可以提交給線程池

Callable,Future,FutureTask三者之間的關系:

Callable的兩種執(zhí)行方式:

1:借助FutureTask,包裝Callable接口的實現(xiàn)類,然后傳遞給Thread線程執(zhí)行


2:借助線程池來執(zhí)行


線程池這個只粘貼關鍵代碼,線程池的知識就不在這多說了,之后會具體講解

返回的Future接口的使用和FutureTask是一樣的

這個接口實現(xiàn)的線程,是有返回值的

可以說一下我之前用到的場景

是這樣的,我之前用到的一般是用于云上,或者存儲服務器下載電子文件,就是本身我一個接口就是需要查詢數(shù)據(jù)庫并,進行結果的大量計算和結果轉(zhuǎn)換的,同時還要上云上下載比較大的電子文件,所以我采用Callable配合線程池來完成云上文件的下載;
編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 線程池
    +關注

    關注

    0

    文章

    57

    瀏覽量

    7108
  • 線程
    +關注

    關注

    0

    文章

    508

    瀏覽量

    20130
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    C++可調(diào)用Callable類型的總結

    自從在使用 std::thread 構造函數(shù)過程中遇到了 Callable 類型的概念以來用到了很多關于它的使用。
    發(fā)表于 07-17 14:04 ?502次閱讀

    【資料分享】SDIO接口介紹( 有SD和SDIO區(qū)別)

    SDIO接口介紹( 有SD和SDIO區(qū)別)
    發(fā)表于 03-12 11:20

    可調(diào)用的VEE服務器,Matlab無法識別

    來回傳遞數(shù)據(jù)。我已經(jīng)使用文件讀/寫來傳遞參數(shù)。我認為問題在于Matlab而不是Callable VEE,因為VBScript / VBAThanks的建議很好-----原始消息-----來自
    發(fā)表于 09-06 13:33

    python用pyserial讀取串口錯誤類型及解決辦法

    is not callable沒有返回值正確代碼:ser = serial.Serial('COM7', 115200, 8, 'N', 1)flag = ser.is_open原因:調(diào)用屬性is_open時將其視為函數(shù),寫成 ser.is_open()。關于is_open的功能及用法,可參見python庫
    發(fā)表于 01-13 07:12

    TMS320C54x DSP Library(庫)

    DSP platform. This source-code library includes C-callable functions (ANSI-C language compatible) for general signal processing math and vec
    發(fā)表于 09-06 00:02 ?26次下載

    多線程并發(fā)處理方式

    1. 捕獲InterruptedException錯誤 請檢查下面的代碼片段: public class Task implements Runnable { private final
    發(fā)表于 09-28 15:02 ?0次下載

    各種標準接口介紹區(qū)別

    本文將重點介紹各種標準接口,并揭示它們對不同嵌入式芯片廠商的區(qū)別所在。了解基本接口可幫助設計人員優(yōu)先考慮哪些接口應為片上。另外,雖然標準
    發(fā)表于 06-04 03:38 ?2.1w次閱讀
    各種標準<b class='flag-5'>接口</b><b class='flag-5'>介紹</b>和<b class='flag-5'>區(qū)別</b>

    USB接口、串口、并口有何區(qū)別

    本文開始介紹了USB接口的工作原理和優(yōu)點,其次詳細的介紹了串口劃分標準和并口的區(qū)別以及并口的主要特點與分類,最后闡述了USB接口、串口和并口
    發(fā)表于 03-26 14:58 ?9.8w次閱讀

    TMS320,c28xDSP中創(chuàng)建可c-callable程序集函數(shù)的簡單方法

    c-callable程序集需要理解參數(shù)傳遞的約定和環(huán)境,這是c編譯器期望的。此應用程序報告提供了配置c編譯器以幫助解決這些問題的說明和建議。
    發(fā)表于 04-11 11:06 ?3次下載
    TMS320,c28xDSP中創(chuàng)建可c-<b class='flag-5'>callable</b>程序集函數(shù)的簡單方法

    一文解讀DP和HDMI的接口定義及區(qū)別分析

    本文首先介紹了DP接口的概念與優(yōu)勢,其次介紹了HDMI優(yōu)勢與選購技巧,最后闡述了DP接口和HDMI的區(qū)別以及分析了HDMI和DP
    發(fā)表于 04-23 09:19 ?9.3w次閱讀

    端口和接口有什么區(qū)別和聯(lián)系嗎

    本文首先介紹了端口的概念、分類及作用,其次介紹接口的概念與顯示器接口的類型,最后介紹了端口和接口
    發(fā)表于 04-23 16:54 ?6.3w次閱讀
    端口和<b class='flag-5'>接口</b>有什么<b class='flag-5'>區(qū)別</b>和聯(lián)系嗎

    像學習編程一樣學習深度學習模型開發(fā)

    前面介紹的各種基本層,除了可以add進Sequential容器串聯(lián)之外,它們本身也是callable對象,被調(diào)用之后,返回的還是callable對象。所以可以將它們視為函數(shù),通過調(diào)用的方式來進行串聯(lián)。
    的頭像 發(fā)表于 06-06 09:19 ?2942次閱讀

    DeferredResult異步請求處理 提高系統(tǒng)吞吐量的一把利器

    基礎準備 ResponseMsg TaskService 阻塞調(diào)用 Callable異步調(diào)用 DeferredResult異步調(diào)用 后記 大家都知道,Callable和DeferredResult
    的頭像 發(fā)表于 10-10 16:55 ?1577次閱讀

    C++ invoke與function的區(qū)別在哪?

    invoke是C++17標準引入的一個函數(shù)模板,用來調(diào)用可調(diào)用對象(Callable Object,如函數(shù)指針、函數(shù)對象、成員函數(shù)指針等)并返回結果。
    的頭像 發(fā)表于 09-04 09:11 ?1052次閱讀
    C++ invoke與function的<b class='flag-5'>區(qū)別</b>在哪?

    java實現(xiàn)多線程的幾種方式

    了多種實現(xiàn)多線程的方式,本文將詳細介紹以下幾種方式: 1.繼承Thread類 2.實現(xiàn)Runnable接口 3.Callable和Future 4.線程池 5.Java 8中
    的頭像 發(fā)表于 03-14 16:55 ?1289次閱讀