如果您只是锁定一个对象,我宁愿使用 synchronized例:Lock.acquire();doSomethingNifty(); // Throws a NPE!Lock.release(); // Oh noes, we never release the lock!你必须明确地try{} finally{}到处做。鉴于同步,它是非常明确的,不可能出错:synchronized(myObject) { doSomethingNifty();}也就是说,Lock对于那些你无法以如此干净的方式获取和释放的更复杂的东西,s可能更有用。老实说,我希望首先避免使用裸机,如果满足您的需求Lock,只需使用更复杂的并发控制,如a CyclicBarrier或a LinkedBlockingQueue。我从来没有理由使用wait()或者notify()可能有一些好的。