新聞中心
新的SwingWorker支持超時(shí),這是通過(guò)覆蓋getTimeout()方法已返回一個(gè)非零值來(lái)實(shí)現(xiàn)的。當(dāng)超出超時(shí)時(shí)間,worker線程會(huì)被中斷。

我們提供的服務(wù)有:做網(wǎng)站、成都網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、安鄉(xiāng)ssl等。為1000+企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的安鄉(xiāng)網(wǎng)站制作公司
如果想查看使用超時(shí)的例子,請(qǐng)參閱注釋版的getTimeout()方法和DynamicTree如何處理TimeoutException。
超時(shí)功能是用TimedCallable來(lái)實(shí)現(xiàn)的,其中使用了FutureResult的timedGet()方法。
增強(qiáng)的異常處理
construct()方法拋出的任何東西都會(huì)被記錄。除了死循環(huán)和死鎖,新的異常處理確保了SwingWorker處于“準(zhǔn)備好”的狀態(tài)。也就是說(shuō),它要么得到一個(gè)正確的結(jié)果,要么得到一個(gè)異常。
下面的get()方法用來(lái)取出結(jié)果。這個(gè)方法繼承自FutureResult:
◆publicObjectget()
◆throwsInvocationTargetException,InterruptedException
如果construct()拋出一個(gè)Exception,get()方法就會(huì)拋出InvocationTargetException。要獲得construct()方法實(shí)際上拋出的異常,可以調(diào)用getTargetException()進(jìn)行異常處理。
如果取結(jié)果的線程在等待結(jié)果的過(guò)程中被中斷,get()方法會(huì)拋出InterruptedException——但這種情況對(duì)SwingWorker來(lái)說(shuō)很罕見,因?yàn)槿〗Y(jié)果的線程通常都是事件派發(fā)線程,并且在finished()會(huì)被調(diào)用以前,結(jié)果總是已經(jīng)準(zhǔn)備好的。
更多調(diào)用工具
SwingWorker的實(shí)現(xiàn)在jozart.swingutils包中。在同一個(gè)包里,你還能找到InvokeUtils類,這個(gè)類還提供了幾個(gè)invokeXXX()方法。后臺(tái)線程可以用這些方法來(lái)在事件派發(fā)線程中獲取值和用戶輸入,再把結(jié)果返回到后臺(tái)線程。
分享題目:SwingWorker增強(qiáng)異常處理
分享鏈接:http://www.5511xx.com/article/cogscdg.html


咨詢
建站咨詢
