如何得到執行緒執行完之後返回的結果
阿新 • • 發佈:2019-02-07
在實際開發過程中,很多時候要將子執行緒執行完後返回的結果給到主執行緒裡。具體怎麼實現呢?這裡給出3個實現方法!
1、根據反射原理實現
很多人都習慣在呼叫執行緒的時候,通過構造方法給執行緒傳遞引數,這裡我們在構造方法裡傳兩個引數,一個是類 callback,一個是方法名 method。這樣我們線上程的run方法最後 執行callback.getMethod(method).invoke(null); 這樣就可能執行你指定的某個類下的某個方法了!
2、Callable+ScheduledThreadPoolExecutor實現
這個是在Java1.5以後,添加了ScheduledThreadPoolExecutor和callable兩個元件(介面),ScheduledThreadPoolExecutor大家可能比較熟悉,它的優點就不說了;它用來執行執行緒進行排程的時候,有一個方法.schedule(Callable <Object> callable, long delay, TimeUnit unit),注意:這裡的引數是Callable而不是Runnable,大家千萬不要被它唬住了,其實它和Runnable差不多,都能實現有個執行緒,只不過Callable可以新增返回值!這正是我們想要的!
3、第三種就是自定義介面,把介面當初引數傳進執行緒裡,然後線上程完成的地方呼叫介面的方法,這個方法也是最常用的