semaphore 只所以可以避免死锁,是因为它的accquire() 和 release()可以不在同一个线程中, 没有拥有关系 ,只有个数的对应 Semaphore threadLock = new Semaphore(0); ,此处个数为0 或者负值 ,需要先释放再 获取。