JDK 10:FutureTask获取一个toString()
我已經(jīng)有很長時間了,對于大多數(shù)具有獨特屬性的Java類,開發(fā)人員應(yīng)該花時間重寫Object.toString() ,即使它只是通過IDE生成的實現(xiàn)或使用諸如Apache之類的庫類來實現(xiàn)Commons Lang的ToStringBuilder 。 如果要手動實現(xiàn)toString ,則重載的Objects.toString() 方法也比以往更容易實現(xiàn)。 隨J2SE 5 引入的JDK類FutureTask最終在JDK 10中獲得了自己的toString()實現(xiàn) 。
理查德·尼科爾斯 ( Richard Nichols )在2012年發(fā)表的文章“ 如何獲取Java執(zhí)行器的運行任務(wù)… ”突出顯示了FutureTask類上toString()方法的省略。 他寫了:
該API不包含任何方式收集有關(guān)內(nèi)部事件的信息,這似乎很奇怪。
執(zhí)行器 ,甚至沒有
toString()實現(xiàn),用于包裝類似的類
FutureTask會冒泡您
可運行或
可調(diào)用類
toString()方法。
Nichols的帖子是在他的觀察的背景下得出的:“在運行時實際上很難公開……Java的Executor在任何時間點實際上正在做什么。”
發(fā)行JDK-8186326 [“使“任務(wù)”對象的toString()方法更有用”]討論了如何將FutureTask toString()與CompletableFuture的對齊,該問題指出“已經(jīng)有一個有用的toString方法 ,給出了當(dāng)前狀態(tài)。” 一個電子郵件線程在2017年后期文檔中添加圍繞討論toString()以FutureTask等“在JUC任務(wù)類”( java.util.concurrent中 )。
Javadoc注釋了新的FutureTask.toString()方法狀態(tài),“默認實現(xiàn)返回一個標識此FutureTask及其完成狀態(tài)的字符串。 括號中的狀態(tài)包含字符串“ Completed Normally ”,“ Completed Exceptionally ”,“ Cancelled ”或“ Not completed ”之一。” FutureTask的toString()的這四個潛在完成狀態(tài)中的三個也有可能被寫為CompletableFuture的toString() [“ Cancelled ”是例外)。
在JDK 10中,將toString()的特定實現(xiàn)添加到FutureTask類中只是一小部分。 但是,對于開發(fā)人員“如診斷JDK-8186326的“問題”語句中所述,在診斷應(yīng)用程序故障時盯著“任務(wù)”對象(Runnables,Callables,Future)的toString的輸出”,此“少量”添加可能是非常歡迎。
翻譯自: https://www.javacodegeeks.com/2018/02/jdk-10-futuretask-gets-tostring.html
總結(jié)
以上是生活随笔為你收集整理的JDK 10:FutureTask获取一个toString()的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jboss eap 7.0_创建委托登录
- 下一篇: 26.0.0-alpha1_WildFl