Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2016, 16:35   #1
Сергей_ТВ
 
Регистрация: 22.08.2016
Сообщений: 7
По умолчанию Как остановить зависший поток?

Пишу код для получения содержания (html контента) по введенному url. Для запроса на получение контента создается отдельный поток. При тестировании столкнулся с тем, что некоторые url подвешивают потоки и их не получается аккуратно остановить. Может кто подскажет в чем проблема?

... собственно виснет поток после 6-ой строчки этого фрагмента

Если нужно могу загрузить архив проекта (маленький, 7 кВ), чтобы на рутину время не тратить...

Код:
static void reader (String url) {
		String content = "";
		
		 try {
	            URLConnection conn = new URL("http://" + url).openConnection();
	            content = new Scanner(conn.getInputStream()).useDelimiter("\\Z").next();
	          
	            	System.out.println(url + " содержание = " + content);
	            	//flag = false;
	        }
	        catch(Exception e)
	        {
	        	System.out.println("URL не найден или Ошибка в URL " + url);
	        	
	        }
		
	}

Последний раз редактировалось Alex11223; 22.08.2016 в 19:48.
Сергей_ТВ вне форума Ответить с цитированием
Старый 22.08.2016, 21:57   #2
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

http://stackoverflow.com/questions/1...tes-too-slowly
Carbon вне форума Ответить с цитированием
Старый 22.08.2016, 22:00   #3
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

По сабжу, единственный легальный способ - Thread#interrupt(). Есть еще запрещенный - Thread#stop().
Carbon вне форума Ответить с цитированием
Старый 24.08.2016, 23:22   #4
Сергей_ТВ
 
Регистрация: 22.08.2016
Сообщений: 7
По умолчанию Решение выше, еще не попробовал, а сделал так

рабочий фрагмент кода
Код:
try {
URLConnection conn = new URL("http://" + url).openConnection();
conn.setConnectTimeout(5000);
conn.setReadTimeout(8000);
content = new Scanner(conn.getInputStream()).useDelimiter("\\Z").next();


System.out.println(url + " содержание = " + content);
//flag = false;
}
catch(Exception e)
{
System.out.println("URL не найден или Ошибка в URL " + url);

}
Спасибо за ответы!

Последний раз редактировалось Alex11223; 25.08.2016 в 01:07.
Сергей_ТВ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
получение видео по idHttp. Зависший поток. olikke Работа с сетью в Delphi 9 08.10.2012 22:08
Как остановить поток? pa6kevi4 Общие вопросы .NET 5 04.06.2010 17:28
Как вовремя остановить поток T-dayne Помощь студентам 1 06.04.2010 11:23
Как остановить поток а потом снова запустить? Des Общие вопросы Delphi 5 03.05.2009 12:35
Как остановить поток? Никки Win Api 3 06.12.2007 22:04