2012-03-16 9 views
6

실제 close() 구현은 기본 클래스의 계층 구조와 추상 메소드 구현의 어딘가에 자리 잡고있는 것으로 보입니다. 예를 들어, 파일 기술자가 공개되는 것을 보장합니까? DatagramChannelImpl에서InputStreamReader.close()는 중간에서 어떻게 작동합니까?

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

: 여기에 내가 알고 싶어 무엇에 가장 가까운 것입니다. 누구든지 영어로 번역 할 수 있습니까?

답변

4

내가 다이빙을 할 때마다 일요일 오라클의 Java 코드 나는 실망합니다. nd을 변수 이름으로 사용 하시겠습니까? 그것보다 더 불투명하지 않습니다.

무엇 ND 참조하고는 파일 기술자를 폐쇄 플랫폼 같은 특정 작업을 처리 NativeDispatcher이다 (친절 가변 FD 명명). 난 단지 NativeThread 체크 및 신호 읽기/쓰기 스레드를 정리하는 것입니다 가정, 소스 많은 정보를 빌려주지 않습니다. isRegistered()에서 AbstractSelectableChannel까지는 채널이 사용되지 않고 kill 메소드가 모든 것을 닫고 마지막으로 nd.close (fd)를 호출한다는 것을 확인합니다.

0

Javadoc의 경우 : "스트림을 닫고 스트림을 닫고 이와 관련된 모든 시스템 리소스를 해제합니다." 파일 FD는 시스템 자원입니다. 그것은 닫힌다.

관련 문제