Конечно, невозможно добавить это как статическую проверку (во время компиляции, то, что компилятор может проверить, чтобы убедиться в этом), потому что время, необходимое для выполнения операции, сильно зависит от среды выполнения, в которой находится программа. обкатка.
Вы можете использовать классы в java.util.concurrent
для запуска операции и ожидания ее завершения в течение определенного времени ожидания. Простой пример (не полностью проверен, но демонстрирует идею):
ExecutorService exec = Executors.newSingleThreadExecutor();
Future<Integer> future = exec.submit(new Callable<Integer>() {
@Override
public Integer call() throws Exception {
Thread.sleep(10000);
return 123;
}
});
try {
// Run the callable, wait for max. 5 seconds
System.out.println(future.get(5, TimeUnit.SECONDS));
}
catch (TimeoutException ex) {
System.out.println("The operation took too long!");
}