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