HTML/JavaScript小工具

HTML/JavaScript小工具

2013年5月1日 星期三

ForkJoinTask-1



 ForkJoinTask<V> is a lightweight thread-like

ForkJoinTask 主要的方法 fork() and join()

fork()在非ForkJoinWorkerThread呼叫會拋出java.lang.ClassCastException
單獨呼叫join()會一直等待ForkJoinTask 完成

還有一些其他方法
invoke()此方法會執行fork() +  join()但他只會在當前的執行緒執行

invokeAll ()他不會有回傳值或錯誤訊息,此方法只可在ForkJoinPool computations使用不然可能會產生ClassCastException的異常或錯誤。
invokeAll 內所有的task都isDone 後才會返回,如當碰到Execption會回傳此Execption其他任務可能會取消!



isDone()回傳true 表示task做完了但不保證他是被取消還是其他狀態
 isCompletedNormally() 回傳true表示正常完成
isCancelled()  表示此Ttask被取消了
isCompletedAbnormally() 表示此任務可能因為cancelled or encountered an exception 此時可使用 getException()


isCancelled(​​)為真,如果該任務已被取消(在這種情況下getException()返回CancellationException,); isCompletedAbnormally()為true的,如果一個任務被取消或遇到異常,在這種情況下,getException()將返回所遇到的異常或CancellationException。




ForJoinTask正常狀況
TestForJoin...
12Howard getException:null
Howard isDone2:true
Howard isCancelled2:false
Howard isCompletedAbnormally2:false
Howard isCompletedNormally2:true

completeExceptionally(new Exception()) 此方法會拋出Exception
ForJoinTask中呼叫completeExceptionally(new Exception())ForkJoinTask狀態如下
     Howard getException:Exception
Howard isDone2:true
Howard isCancelled2:false
Howard isCompletedAbnormally2:true
Howard isCompletedNormally2:false
ForJoinTask中呼叫: this.cancel(true);
TestForJoin...
Howard getException:java.util.concurrent.CancellationException
Howard isDone2:true
Howard isCancelled2:true
Howard isCompletedAbnormally2:true
Howard isCompletedNormally2:false

沒有留言:

張貼留言