Могу ли я установить тайм-аут для передачи данных в Java HttpURLConnection? - PullRequest
0 голосов
/ 15 августа 2011

Я использую

URLConnection urlConn = theURL.openConnection();

// set connect timeout.
urlConn.setConnectTimeout(5000);

// set read timeout.
urlConn.setReadTimeout(5000);

в моем приложении.Один тайм-аут для времени соединения, в течение времени, пока не начнется чтение.Есть ли простой способ тайм-аута фактического процесса передачи данных?

У меня есть потоки, считывающие данные с очень медленных хостов, или источник данных очень большой, что приводит к слишком долгому времени передачи.Как я могу ограничить это время?

Ответы [ 2 ]

0 голосов
/ 15 августа 2011

Вы можете попробовать использовать Thread.join (int) -> http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Thread.html#join(long). Затем проверьте состояние потока, как только это будет сделано. Если он не закончился, завершите его и примите время ожидания.

0 голосов
/ 15 августа 2011

Насколько я понял, и я думаю, что документы поддерживают это, readTimeout начинается с момента, когда начинается чтение InputStream - так что это приведет к превышению времени для длинной передачи.

Редактировать: документы говорят:

Ненулевое значение указывает время ожидания при чтении из входного потока когда соединение установлено с ресурсом

это, возможно, не так хорошо написано, но звучит для меня так, как будто это действительно относится ко времени передачи.

...