On 11/01/2011 10:46 PM, Seán Coffey wrote:
Charles,

Yes - all three streams will now be closed. Previous to 7082769, when any of the streams calls close(), the underlying filedescriptor used get closed out via the native close0() call.

A list of Closeables is maintained by FileDescriptor.

regards,
Sean.

On 01/11/2011 13:54, Charles Lee wrote:
On 10/29/2011 02:13 AM, Seán Coffey wrote:
This is a second stab at cleaning up the close() and finalize() methods for FileInputStream / FileOutputStream / RandomAccessFile classes so that all parents/referents sharing the same native FileDescriptor are closed out correctly.

With Alan's assistance, we have a better implementation in place where we avoid the use of counters and instead cycle through a list of shared closeables when a FileDescriptor is being shared.

Bug report (not visible yet) http://bugs.sun.com/view_bug.do?bug_id=7105952

webrev : http://cr.openjdk.java.net/~coffeys/webrev.7105952/

regards,
Sean.


Hi Sean,

If we have 3 FileInputStream which share the same FileDescriptor, and one of the FileInputStream calls its own close. Will other 2 FileInputStream close?

I see fd.closeAll is called in the close of FileInputStream, I guess it will close all the things which shared the same fd.


Does it change the original mechanism? IIRC, the original will remain the other FileInputStream function well (can read from the under stream), until the fd count become 0.

--
Yours Charles

Reply via email to