Javaで特定のメソッドを実行する際に、一定時間応答がなければ失敗とみなす(例外を出すなどで強制的に次の作業へ移行できる)ようにするにはどうしたらいいのでしょうか?
利用環境はJava11以降を想定しています。
たとえば、下記コードのgetVeryLongTime()
が3秒はかかるように書いていますが、呼び出す側が0.5秒以上経過したら実行を諦める(というべきか)ことで、Javaの実行自体は停止せずに次の作業に進めるようにしたいということです。
java
1public class TimeoutCheck { 2 3 public static void main(String[] args) { 4 // 0.5秒以上getVeryLongTime()を実行した際に強制的に例外かなにかで抜けたい 5 6 // ここまで 7 8 System.out.println("OK"); 9 } 10 11 public static int getVeryLongTime(int a) { 12 try { 13 Thread.sleep(3000); 14 } catch (InterruptedException e) { 15 System.out.println("3sec"); 16 } 17 return 0; 18 } 19 20}
スレッド制御を使えばどうにかできそうとは思いましたが、うまくひねり出せない次第です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。