第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

異常處理 ScheduledExecutorService

異常處理 ScheduledExecutorService

寶慕林4294392 2023-05-10 17:33:21
我正在使用ScheduledExecutorService以固定間隔運行線程1 min。一個實例ScheduledExecutorService運行一個線程,另一個實例運行另一個線程。例子:ses1.scheduleAtFixRate(..) // for thread 1   ses2.scheduleAtFixRate(..) // for thread 2我遇到了一些異常,進一步執(zhí)行停止。我想捕獲系統(tǒng)關閉我的應用程序的異常。我應該使用第三個線程來處理異常,該線程同時監(jiān)視未來并處理異常,還是有其他更好的方法?會不會影響其他線程。任何幫助表示贊賞!
查看完整描述

1 回答

?
holdtom

TA貢獻1805條經(jīng)驗 獲得超10個贊

我遇到了一些異常,進一步執(zhí)行停止。

ScheduledExecutorService.scheduleAtFixRate()這是根據(jù)規(guī)范的預期行為:

如果任務的任何執(zhí)行遇到異常,則后續(xù)執(zhí)行將被抑制。

關于您的需求:

我想捕獲系統(tǒng)關閉我的應用程序的異常。
我應該使用第三個線程來處理異常,該線程同時監(jiān)視未來并處理異常,還是有其他更好的方法?

處理未來的回報看起來ScheduledFuture.get()是正確的。根據(jù)ScheduledFuture.scheduleAtFixedRate()規(guī)格:

否則,任務只會通過取消或終止執(zhí)行者來終止。

所以你甚至不需要創(chuàng)建一個新的預定未來。
只需運行兩個并行任務(ExecutorService也可以使用一個或兩個線程),等待get()每個任務Future并在任務中拋出異常時停止應用程序:

Future<?> futureA = ses1.scheduleAtFixRate(..) // for thread 1  

Future<?> futureB = ses2.scheduleAtFixRate(..) // for thread 2

submitAndStopTheApplicationIfFail(futureA);

submitAndStopTheApplicationIfFail(futureB);


public void submitAndStopTheApplicationIfFail(Future<?> future){

      executor.submit(() -> {

      try {

        future.get();

      } catch (InterruptedException e) {

        // stop the application

      } catch (ExecutionException e) {

        // stop the application

      }

    });

}


查看完整回答
反對 回復 2023-05-10
  • 1 回答
  • 0 關注
  • 247 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號