2012-03-16 8 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はシステム資源である。それは閉鎖される。

関連する問題