2012-03-16 37 views
6

Dường như việc triển khai thực tế close() được giấu ở đâu đó trong cấu trúc phân cấp của các lớp cơ sở và triển khai các phương pháp trừu tượng. Ví dụ: bạn có chắc chắn rằng bộ mô tả tệp được phát hành không? Dưới đây là những điều gần gũi nhất với những gì tôi muốn biết:InputStreamReader.close() hoạt động như thế nào?

nd.preClose(fd); 
    long th; 
    if ((th = readerThread) != 0) 
    NativeThread.signal(th); 
    if ((th = writerThread) != 0) 
    NativeThread.signal(th); 
    if (!isRegistered()) 
    kill(); 

từ DatagramChannelImpl. Có ai có thể dịch sang tiếng Anh không?

Trả lời

4

Vì vậy, mỗi lần tôi tìm nguồn Mặt trời Mã Java của Oracle, tôi thất vọng. nd là tên biến? Không nhận được nhiều đục hơn thế.

nd là tham khảo là NativeDispatcher mà xử lý các hoạt động cụ thể nền tảng, chẳng hạn như đóng file descriptor (vui lòng đặt tên cho biến fd). Tôi chỉ có thể giả sử kiểm tra và tín hiệu NativeThread là làm sạch các chủ đề đọc/ghi, nguồn không cho vay nhiều thông tin. isRegistered() từ AbstractSelectableChannel đảm bảo Kênh không được sử dụng và phương pháp kill là cách đóng tất cả mọi thứ và cuối cùng gọi số nd.close (fd);

0

Từ Javadoc: "Đóng luồng và giải phóng mọi tài nguyên hệ thống liên kết với nó". Tệp FD là tài nguyên hệ thống. Ergo nó bị đóng lại.

Các vấn đề liên quan