В Java, когда URL-соединение закрывается?
-
07-07-2019 - |
Вопрос
Когда Java освобождает соединения от URL? Я не вижу метода close () ни в URL, ни в URLConnection, поэтому освобождает ли оно соединение после завершения запроса? В основном я спрашиваю, нужно ли мне выполнять какую-либо очистку в обработчике исключений.
try {
URL url = new URL("http://foo.bar");
URLConnection conn = url.openConnection();
// use the connection
}
catch (Exception e) {
// any clean up here?
}
Решение
Это зависит от конкретного протокола, указанного в протоколе. Некоторые поддерживают постоянные соединения, другие закрывают свои соединения, когда ваш вызов закрывается во входном или выходном потоке, заданном соединением. Но кроме напоминания о закрытии потоков, которые вы открыли из URLConnection, вы ничего не можете сделать.
Из javadoc для java.net.URLConnection
Вызов методов close () для InputStream или OutputStream объекта URLConnection после запроса может освободиться сетевые ресурсы, связанные с этим экземпляр, если не конкретный протокол спецификации указывают разные поведения для него.
Другие советы
Если вы приведете к HttpURLConnection, будет disconnect () . Если соединение не используется, оно, вероятно, будет немедленно отключено. Нет гарантий.