執行緒 七 CallableAndFuture

2021-07-14 08:25:30 字數 1128 閱讀 9755

我們在前面的總結中的所有的執行緒的使用,大家有沒有覺的有乙個問題就是我們得不到執行緒的執行的返回的結果,這個是不是有點然人懊惱,對的我們只是建立了執行緒去執行,但是我們沒有獲取到他的返回值,在有些時候這個是不必須的,但是如果我們 需要執行緒的執行結果呢,我們需要執行緒的執行結果加以運算之類的,怎麼辦,別著急,我們還有方法可以取到執行緒的執行結果的,那就是callable,callable就是幫助我們獲取到執行緒的執行結果,我們在使用callable的時候需要重寫他的call()方法.在使用callable的時候我們配合的使用future,那麼我們就可達到這樣的效果:我們的執行緒在執行一些費時的操作,我們可以先把執行緒裝進我們的乙個容器裡,等到我們需要的時候我們直接從容器中取結果就ok;下面我們來看下我們的**

public class callableandfuture 

};futuretask task = new futuretask(callable);

new thread(task).start();

try catch (interruptedexception e) catch (executionexception e)

}}

我們可以看到我們時候用的是 futuretask 這個容器來裝在我們的執行緒,最後呼叫他的task方法就可以取得執行緒執行的結果了.futuretask實現了runable介面和future介面,那麼說名他可以執行我們的執行緒也可以獲取我們執行緒的執行 結果,future裡面有很多的執行緒相關的方法,大家可以進去看看原始碼,檢測函式和獲取結果函式等等
下面我們在使用乙個執行緒池的方式來卡看我們的callable和future的使用:
public class callableandfutrue2 

};future future = service.submit(callable);

futures.add(future);

} for (future future : futures) catch (interruptedexception e) catch (executionexception e) }}

}

我們 建立乙個future容器來裝在我們的執行緒執行結果,最後遍歷這個容器就可以取得結果了.我們 使用的是上一節我們總結的newcachedthreadpoll當時建立的執行緒池.

七 執行緒操作

include include include include include include include include include include include define buffer 512 struct copy file void copy void arg if bytes...

python執行緒加鎖(七)

今天學習了python中的執行緒加鎖功能,為了方便記憶,特地把 附上 coding utf 8 給執行緒加鎖 import time import thread def t name,x,lock for i in xrange x print i,name time.sleep 1 暫停1秒 lo...

多執行緒學習(七)

問題 1.賣票系統 如果每個執行緒執行的 相同,可以使用同乙個runnable物件,這個runnable物件中有那個共享資料 解決public class multithreadsharedatastudy class ticketsystem implements runnable 2.設計4個執...