私の知る限り、同期内で行われた変更が同じロックで同期している次のスレッドに表示される「前に起こる」状態。
private final Object closeLock = new Object();
private volatile boolean closed = false;
public void close() throws IOException {
synchronized (closeLock) {
if (closed) {
return;
}
closed = true;
}
if (channel != null) {
channel.close();
}
fd.closeAll(new Closeable() {
public void close() throws IOException {
close0();
}
});
}
冗長ではありませんか?