Trong Java khi nào thì kết nối URL đóng?


81

Khi nào java bỏ kết nối đến URL? Tôi không thấy phương thức close () trên URL hoặc URLConnection, vậy nó có giải phóng kết nối ngay sau khi yêu cầu kết thúc không? Tôi chủ yếu hỏi xem liệu tôi có cần thực hiện bất kỳ công việc dọn dẹp nào trong một trình xử lý ngoại lệ hay không.

try {
  URL url = new URL("http://foo.bar");
  URLConnection conn = url.openConnection();
  // use the connection
}
catch (Exception e) {
  // any clean up here?
}

10
Không bao giờ sử dụng catch (Exception), nếu một ngoại lệ cụ thể được ném, bắt mỗi người tại khoản riêng của mình
OscarRyz

4
hoặc ít nhất là bắt Ngoại lệ cuối cùng (trong trường hợp không có ngoại lệ nào khác bắt được ngoại lệ).
jeremy

Câu trả lời:


49

Nó phụ thuộc vào giao thức cụ thể được chỉ định trong giao thức. Một số duy trì kết nối liên tục, số khác đóng kết nối của chúng khi cuộc gọi của bạn đóng trong dòng đầu vào hoặc đầu ra do kết nối cung cấp. Nhưng ngoài việc nhớ đóng các luồng bạn đã mở từ URLConnection, bạn không thể làm gì khác.

Từ javadoc cho java.net.URLConnection

Việc gọi các phương thức close () trên InputStream hoặc OutputStream của URLConnection sau một yêu cầu có thể giải phóng tài nguyên mạng được liên kết với trường hợp này, trừ khi các đặc tả giao thức cụ thể chỉ định các hành vi khác nhau cho nó.


2
Điều này trả lời tốt nhưng không bao gồm trường hợp danh nghĩa của HttpUrlConnection.
Snicolas

53

Nếu bạn truyền tới một HttpURLConnection, sẽ có một phương thức ngắt kết nối () . Nếu kết nối không hoạt động, nó có thể sẽ ngắt kết nối ngay lập tức. Không có bảo đảm.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.