线程间如何实现通信?wait,notify,notify all,signal 死锁产生的条件,如何避免 java中常见的锁及特征