Java Callable和Future學習
導語:Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++裏難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。下面我們來看看JavaCallable和Future學習,希望對大家有所幫助。
常見用法
一般Callable和Future搭配使用的方法如下:
把Callable任務提交給線程池,線程池給我們返回一個Future對象;
然後我們通過Future拿到一個結果;
説明:線程池幫我們做了太多事情,而且封裝起來,這樣子我們理解底層機制就非常困難,畢竟距離冰冷的現實越遠,對底層越難以理解;
原理概述
線程池背後做的事情如下:
把Callable轉換為FutureTask(這個對象實現了Futuure和Runnable接口,並且包含Callable屬性);
線程把FutureTask當做Runnable進行調度,在真正執行的時候調用的是FutureTask中的`run方法,這個方法乾的事情就是:
調用Callable的call方法,然後再把結果放到FutureTask的屬性outcome上,
這樣,當我們FutureTask調用get方法(實現了Futuure的get方法),(當然完成的情況下)就給我們返回outcome;
-
java語言的接口與繼承
Java是一個面向對象的語言。對程序員來説,這意味着要注意應中的數據和操縱數據的方法,而不是嚴格地用過程來思考。下面是小編分享的java語言的接口與繼承,一起來看一下吧。大多數人認為,接口的意義在於頂替多重繼承。眾所周知Java沒有c++那樣多重繼承的機制,但是卻...
-
java的應用範圍
Java是一種可以撰寫跨平台應用軟件的面向對象的程序設計語言。自從sun公司推出java語言以來,java極大受到開發者和企業的歡迎,在互聯網如此發達的今天,java語言得到了廣泛的應用,比如網站,遊戲,電子商務等,java語言在這些領域開發佔很大的比例。在全球雲計算和移動互...
-
講述java中enum的用法
本文實例講述了java中enum的用法。分享給大家供大家參考。具體分析如下:1.基本用法複製代碼代碼如下:enumDay{SUNDAY,MONDAY,TUESDAY,WENDSDAY,THURSDAY,FRIDAY,SATURDAY;}枚舉是常量,所以應該用大寫。2.枚舉是對象枚舉隱含地繼承了,所以它具有的.屬性和方法。遍...
-
java中set接口的使用方法
java中的set接口有如下的特點:不允許出現重複元素;集合中的元素位置無順序;有且只有一個值為null的元素。因為java中的set接口模仿了數學上的set抽象,所以,對應的數學上set的特性為:互異性:一個集合中,任何兩個元素都認為是不相同的,即每個元素只能出現一次。無序性:一個...
相關文章
- 如何理解Javascript的caller,callee,call,apply區別
- 如何理解Javascript的caller,callee,call,apply區別
- 如何理解Javascript的caller,callee,call,apply區別
- 如何理解Javascript的caller,callee,call,apply區別
- 如何理解Javascript的caller,callee,call,apply區別
- java的String=a; a==null和a.equals(null)這兩個判斷有什麼區別
- 如何理解Javascript的caller,callee,call,apply區別
- 如何理解Javascript的caller,callee,call,apply區別
- 如何理解Javascript的caller,callee,call,apply區別
- 如何理解Javascript的caller,callee,call,apply區別