Làm tiêu tan Javadoc :
Các luồng có phương thức BaseStream.close () và triển khai AutoClosizable, nhưng gần như tất cả các trường hợp luồng không thực sự cần phải đóng sau khi sử dụng. Nói chung, chỉ các luồng có nguồn là kênh IO (chẳng hạn như các luồng được trả về bởi Files.lines (Đường dẫn, Bộ ký tự)) sẽ yêu cầu đóng. Hầu hết các luồng được hỗ trợ bởi các bộ sưu tập, mảng hoặc các hàm tạo, không yêu cầu quản lý tài nguyên đặc biệt. (Nếu một luồng yêu cầu đóng, nó có thể được khai báo dưới dạng tài nguyên trong câu lệnh try-with-resource.)
"Gần như tất cả" và "nói chung" là mơ hồ - nếu bạn đang viết thư viện và bạn đang trừu tượng hóa nguồn Luồng của mình từ những người dùng Luồng đó, thì bạn luôn phải tự hỏi mình câu hỏi - "tôi có nên đóng không điều này?" Các luồng được hỗ trợ bởi IO cần phải được đóng lại vì các hoạt động của thiết bị đầu cuối không gọi close
, vì vậy, tôi luôn phải nhớ / ghi lại nơi luồng của tôi đến hoặc tôi luôn phải thực hiện close
.
Tùy chọn hạt nhân mà tôi đoán sẽ không trả về Luồng từ các phương thức hoặc chấp nhận tham số Luồng, đây là một tình cảm đã được một số người trong nhóm JDK lặp lại. Tôi thấy rằng việc giới hạn quá mức khi xem xét tính hữu dụng thực tế của Luồng.
Thực tiễn tốt nhất của bạn xung quanh việc đóng Luồng là gì? Tôi đã tìm kiếm câu trả lời trực tuyến cho một số người trong nhóm JDK, những người thường hoạt động trong các câu hỏi tương tự của cộng đồng, nhưng không tìm thấy bất cứ điều gì có liên quan.