- Use AtomicReference instead of synchronized block - Extend java.io.Closeable; document contract - Consolidate close/state transition logic