Да, он «застрял», хотя правильная формулировка такова, что он «заблокирован». Он блокируется, пока не получит строку текста. Когда сокет закрыт на другой стороне, соединение TCP будет указывать на завершение, и входной поток закрывается. В этот момент вы получите null
, как указано в API. Однако до того, как это произойдет, подпрограмма высокого уровня readLine
будет радостно ждать до конца времени или до тех пор, пока нижний уровень не сгенерирует тайм-аут.
Таким образом, это может быть не очень хорошей идеей. использовать readLine
или даже потоковую передачу, если вы не доверяете своему соединению с сервером для возврата каких-либо данных. Однако вы можете установить сокет на тайм-аут и сгенерировать исключение вместо этого, используя Socket.html#setSoTimeout(int)
- если вы считаете, что сервер не отвечает, является исключительной проблемой.