在前面的文章中我們講述了創(chuàng)建線(xiàn)程的2種方式,一種是直接繼承Thread,另外一種就是實(shí)現(xiàn)Runnable接口。
這2種方式都有一個(gè)缺陷就是:在執(zhí)行完任務(wù)之后無(wú)法獲取執(zhí)行結(jié)果。
如果需要獲取執(zhí)行結(jié)果,就必須通過(guò)共享變量或者使用線(xiàn)程通信的方式來(lái)達(dá)到效果,這樣使用起來(lái)就比較麻煩。
而自從Java 1.5開(kāi)始,就提供了Callable和Future,通過(guò)它們可以在任務(wù)執(zhí)行完畢之后得到任務(wù)執(zhí)行結(jié)果。
今天我們就來(lái)討論一下Callable、Future和FutureTask三個(gè)類(lèi)的使用方法。以下是本文的目錄大綱:
一.Callable與Runnable
二.Future
三.FutureTask
四.使用示例
先說(shuō)一下java.lang.Runnable吧,它是一個(gè)接口,在它里面只聲明了一個(gè)run()方法:
public interface Runnable {
public abstract void run();
}
由于run()方法返回值為void類(lèi)型,所以在執(zhí)行完任務(wù)之后無(wú)法返回任何結(jié)果。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-641249.html
Callable位于java.util.concurrent包下,它也是一個(gè)接口,在它里面也只聲明了一個(gè)方法,只不過(guò)這個(gè)方法叫做call():文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-641249.html
到了這里,關(guān)于Java并發(fā)編程:Callable、Future和FutureTask的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!