В thread local переменной сохраняется дедлайн работы потока (текущее время + заданный таймаут). Далее для всех сетевых запросов выставляется таймаут равный оставшемуся времени работы потока. Можно сделать удобную реализацию, чтобы thread local timeout автоматически учитывался во всех клиентах и jdbcTemplate. Так же проверки на thread local timeout вручную добавляются в time consuming операциях, например на каждой итерации цикла. Если время работы потока вышло, то выбрасывается ThreadLocalTimeoutException, который завершает работу этого потока. Если запускаются параллельные потоки, то в них прокидывается таймаут равный исходному таймауту минус уже прошедшее время.
В thread local переменной сохраняется дедлайн работы потока (текущее время + заданный таймаут). Далее для всех сетевых запросов выставляется таймаут равный оставшемуся времени работы потока. Можно сделать удобную реализацию, чтобы thread local timeout автоматически учитывался во всех клиентах и jdbcTemplate. Так же проверки на thread local timeout вручную добавляются в time consuming операциях, например на каждой итерации цикла. Если время работы потока вышло, то выбрасывается ThreadLocalTimeoutException, который завершает работу этого потока. Если запускаются параллельные потоки, то в них прокидывается таймаут равный исходному таймауту минус уже прошедшее время.
Это пасхалочка)