Java でタイマーを設定する
この質問は当初、データベース接続を試行し、接続に問題がある場合に例外をスローするタイマーの設定に焦点を当てていました。起きます。明確化された質問はさらに、指定された期間にわたってタスクを実行するようにタイマーをリクエストし、タスクがその時間を超えると例外をスローします。
タイマーの設定
タイマーを設定するには、java.util.Timer オブジェクトを作成します。
Timer timer = new Timer();
タスクを 1 回実行するには、スケジュールを設定します。 using Timer.schedule():
timer.schedule(new TimerTask() { @Override public void run() { // Database code here } }, 2*60*1000); // 2 minutes in milliseconds
指定した間隔でタスクを繰り返すには、Timer.scheduleAtFixedRate():
timer.scheduleAtFixedRate(new TimerTask() { @Override public void run() { // Database code here } }, 2*60*1000, 2*60*1000);
タイムアウト メカニズム
タスクのタイムアウトを設定するには、 ExecutorService:
ExecutorService service = Executors.newSingleThreadExecutor(); try { Runnable r = new Runnable() { @Override public void run() { // Database task } }; Future<?> f = service.submit(r); f.get(2, TimeUnit.MINUTES); // attempt the task for 2 minutes } catch (InterruptedException e) { // Thread interrupted during sleep, wait, or join } catch (TimeoutException e) { // Took too long! } catch (ExecutionException e) { // Exception within the Runnable task } finally { service.shutdown(); }
タスクが 2 分以内に完了すると、このコードは正常に実行されます。それ以外の場合は、TimeoutException がスローされ、データベースまたはネットワーク接続で例外が発生するまでスレッドは実行を続けます。
以上がTimers と ExecutorService を使用して Java でタスクのタイムアウト メカニズムを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。