Задержка чтения ввода-вывода Java - PullRequest
0 голосов
/ 23 июня 2011

Когда я пытаюсь прочитать InputStream, чтение занимает много времени с сервера.Процесс читает паузы в несколько байтов на 5 минут, читает снова, и так продолжается.Но поток зависает после чтения некоторых байтов.Есть ли способ быстро прочитать байты?

Ответы [ 2 ]

0 голосов
/ 23 июня 2011

Процесс читает несколько байтов пауз на 5 минут

Что это значит. Вы делаете паузу или она сама себя останавливает?

Если вы делаете паузу в течение 5 минут, не беспокойтесь. read () будет блокироваться, пока данные не станут доступны. Это может быть намного меньше, чем 5 минут, поэтому вы, вероятно, тратите много времени.

Если он сам приостанавливается, то это потому, что read () будет блокировать, пока данные не станут доступны (см. Выше). Это означает, что сервер отправляет не так быстро, как вы ожидаете. Так что исследуй это, а не поведение получателя.

0 голосов
/ 23 июня 2011

Если вы читаете байты с любого устройства, вы должны ожидать, что read () будет блокироваться в течение определенного периода времени.Как долго это зависит от устройства.Если это Socket, это зависит от другого конца, отправляющего данные и характеристики вашей сети.

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

...