* callable是類似於runnable的介面,實現callable介面的類和實現runnable的類都是可被其它執行緒執行的任務。
* callable和runnable有幾點不同:
* (1)callable規定的方法是call(),而runnable規定的方法是run().
* (2)callable的任務執行後可返回值,而runnable的任務是不能返回值的。
* (3)call()方法可丟擲異常,而run()方法是不能丟擲異常的。
* (4)執行callable任務可拿到乙個future物件,
* future 表示非同步計算的結果。它提供了檢查計算是否完成的方法,以等待計算的完成,並檢索計算的結果。
* 通過future物件可了解任務執**況,可取消任務的執行,還可獲取任務執行的結果。
例子:
publicclass
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
;
}
}
}
publicclass
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...