Callable 和 Future介面 學習

2022-04-02 01:47:23 字數 1209 閱讀 8124

* callable是類似於runnable的介面,實現callable介面的類和實現runnable的類都是可被其它執行緒執行的任務。

* callable和runnable有幾點不同:

* (1)callable規定的方法是call(),而runnable規定的方法是run().

* (2)callable的任務執行後可返回值,而runnable的任務是不能返回值的。

* (3)call()方法可丟擲異常,而run()方法是不能丟擲異常的。

* (4)執行callable任務可拿到乙個future物件,

* future 表示非同步計算的結果。它提供了檢查計算是否完成的方法,以等待計算的完成,並檢索計算的結果。

* 通過future物件可了解任務執**況,可取消任務的執行,還可獲取任務執行的結果。

例子:

public

class

timeout

catch

(interruptedexception e) catch

(executionexception e) catch (timeoutexception e) finally

} static

class myjob implements callable

public

boolean call()

if (thread.interrupted())

}

system.

out.println("

繼續執行..........

");

return

true

;

}

}

}

public

class

timeouttest1

catch

(interruptedexception e)

catch

(executionexception e)

catch

(timeoutexception e)

finally

}}class taskthread implements callable

catch

(exception e)

return

result;

}}

Callable和future介面詳解

runnbale封裝乙個非同步執行的任務,可以把它想象成乙個沒有任何引數和返回值的非同步方法。callable和runnable相似,但是它有返回值。callable介面是引數化的型別,只有乙個方法call public inte ce callable catch runtimeexception...

Future和Callable的用法總結

executorservice service executors.newcachedthreadpool futurefu service.submit new callable system.out.println 傳送訊息 system.out.println 返回結果是 fu.get 200...

使用Callable和Future介面建立執行緒

具體是建立callable介面的實現類,並實現clall 方法。並使用futuretask類來包裝callable實現類的物件,且以此futuretask物件作為thread物件的target來建立執行緒。看著好像有點複雜,直接來看乙個例子就清晰了。public class threadtest s...