ForkJoinTask的異常處理機制和方法

ForkJoinTask類提供了以下兩個方法:

public final boolean isCompletedAbnormally() {
    return status < NORMAL;
}

以上方法其實就是做個任務狀態的判斷,如果任務拋出了異常,或者被取消,則返回true。

public final Throwable getException() {
    int s = status & DONE_MASK;
    return ((s >= NORMAL)    ? null :
            (s == CANCELLED) ? new CancellationException() :
            getThrowableException());
}

以上方法其實也是做任務狀態的比較,然後決定是返回null,還是返回異常,該方法可以得到返回值。

通過以上兩個方法的結合,就可以做到對ForkJoinTask的異常處理,代碼demo如下:

ForkJoinTask task;//ForkJoinTask是一個接口,不能是實例化,這裏默認task是ForkJoinTask子類的實例對象

//如果該方法返回true,說明任務執行過程拋出了異常或者已經被取消
if(task.isCompletedAbnormally){
     //返回Throwable對象,如果任務被取消,返回CancellationException異常,如果任務沒出現異常或者沒完成,則返回null
     System.out.println(task.getException());
}

總結

通過isCompletedAbnormally()方法配合getException()方法就能夠實現ForkJoinTask的異常處理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章