Вместо того, чтобы бороться с отдельным потоком-наблюдателем, вам может быть достаточно (хотя и не совсем соответствует вашему требованию), если вы включите тайм-ауты подключения и чтения в сетевом подключении, например ::
URL url = new URL("...");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
conn.setReadTimeout(10000);
InputStream is = conn.getInputStream();
В этом примере произойдет сбой, если для подключения к серверу требуется более 5 секунд (5000 мс) или если вам придется ждать более 10 секунд (10000 мс) между любыми фрагментами содержимого, которые фактически читаются. Тем не менее, он не ограничивает общее время, необходимое для извлечения страницы.