- 相關(guān)推薦
Java Callable和Future學(xué)習(xí)
導(dǎo)語:Java是一門面向?qū)ο缶幊陶Z言,不僅吸收了C++語言的各種優(yōu)點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。下面我們來看看JavaCallable和Future學(xué)習(xí),希望對大家有所幫助。
常見用法
一般Callable和Future搭配使用的方法如下:
把Callable任務(wù)提交給線程池,線程池給我們返回一個Future對象;
然后我們通過Future拿到一個結(jié)果;
說明:線程池幫我們做了太多事情,而且封裝起來,這樣子我們理解底層機制就非常困難,畢竟距離冰冷的現(xiàn)實越遠(yuǎn),對底層越難以理解;
原理概述
線程池背后做的事情如下:
把Callable轉(zhuǎn)換為FutureTask(這個對象實現(xiàn)了Futuure和Runnable接口,并且包含Callable屬性);
線程把FutureTask當(dāng)做Runnable進(jìn)行調(diào)度,在真正執(zhí)行的時候調(diào)用的是FutureTask中的run方法,這個方法干的事情就是:
調(diào)用Callable的call方法,然后再把結(jié)果放到FutureTask的屬性outcome上,
這樣,當(dāng)我們FutureTask調(diào)用get方法(實現(xiàn)了Futuure的get方法),(當(dāng)然完成的情況下)就給我們返回outcome;
【Java Callable和Future學(xué)習(xí)】相關(guān)文章:
Java和PHP的區(qū)別09-09
java和js的區(qū)別08-05
Java常量和變量06-17
關(guān)于java的學(xué)習(xí)捷徑06-04
Java語言的學(xué)習(xí)技巧08-11
Java編程學(xué)習(xí)示例07-31