BlockingQueue源码中如何实现线程安全?