Readers and Writers should shutdown in user threads so that shutdown process is guaranteed to complete even if other non-daemon threads are terminated