Как видно из API InputStream, для этого нет общего контракта. Однако некоторые потоки, такие как InputStream, который вы получаете из сокета, имеют поведение тайм-аута, но это должно быть настроено для сокета.
AFAIK. Вы можете попытаться прервать поток чтения вручную, вызвав для него interrupt (), и надеяться, что базовая реализация вашего Stream не поймает его, не перебрасывая его (распространенная ошибка при использовании wait () на мониторе ). Это, однако, должно быть сделано в дополнительном потоке или с использованием API будущего, который вы упомянули выше. Если вы перехватываете это InterruptedException и обрабатываете его соответствующим образом, у вас должно быть достаточно стабильное решение.
PS: что такое MDB? Я знаю эту аббревиатуру только для формата базы данных Microsoft, используемого Microsoft Access.