私はこの例に従って少し前に同じことをしました:
基本的な考え方は、コードを Callable または Runnable を実装するクラスに配置し、Callable または Runnable クラスをパラメーターとしてスレッドを呼び出す場所に FutureTask を作成することです。executor を定義し、futureTask を executor に送信すると、try catch ブロック内で x 時間スレッドを実行できるようになりました。スレッドが timeoutException で終了すると、時間がかかりすぎたことがわかります。
これが私のコードです:
CallableServiceExecutor callableServiceExecutor = new CallableServiceExecutor();
FutureTask<> task = new FutureTask<>(callableServiceExecutor);
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.submit(task);
Boolean exito = true;
try {
result = task.get(getTimeoutValidacion() , TimeUnit.SECONDS);
} catch (InterruptedException e) {
exito = false;
} catch (ExecutionException e) {
exito = false;
} catch (TimeoutException e) {
exito = false;
}
task.cancel(true);
executor.shutdown();