糯米文學吧

位置:首頁 > 計算機 > java語言

Java Callable和Future學習

java語言1.66W

導語:Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++裏難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。下面我們來看看JavaCallable和Future學習,希望對大家有所幫助。

Java Callable和Future學習

常見用法

一般Callable和Future搭配使用的方法如下:

把Callable任務提交給線程池,線程池給我們返回一個Future對象;

然後我們通過Future拿到一個結果;

説明:線程池幫我們做了太多事情,而且封裝起來,這樣子我們理解底層機制就非常困難,畢竟距離冰冷的現實越遠,對底層越難以理解;

原理概述

線程池背後做的事情如下:

把Callable轉換為FutureTask(這個對象實現了Futuure和Runnable接口,並且包含Callable屬性);

線程把FutureTask當做Runnable進行調度,在真正執行的時候調用的是FutureTask中的`run方法,這個方法乾的事情就是:

調用Callable的call方法,然後再把結果放到FutureTask的屬性outcome上,

這樣,當我們FutureTask調用get方法(實現了Futuure的get方法),(當然完成的情況下)就給我們返回outcome;