Вы можете использовать AOP и @Timeable
аннотацию из jcabi-аспектов (я разработчик):
@Timeable(limit = 1, unit = TimeUnit.SECONDS)
String load(String resource) {
// do this check regularly:
if (Thread.currentThread.isInterrupted()) {
throw new IllegalStateException("time out");
}
// execution as normal
}
Когда ограничение времени достигнет вашего потока, который установит флаг interrupted()
, установленный на true
, и ваше задание правильно справится с этой ситуацией и прекратит выполнение.