- lock是jdk中的一接口,在使用的时候必须要手动释放锁,否则会造成死锁, - sync是一个关键字,是通过jvm底层来实现加锁的,使用的时候无需手动释放,异常时可以自动释放锁不会造成死锁 - lock可以使用interrupt来中断等待,但是sync是无法中断的,只能等待释放锁 - lock可以通过trylock来知道是否获得锁,但是sync不可以 - lock可以通过readwritelock来提高多个线程进行读操作的效率 - sync在底层有一些优化,比如适应自旋,锁消除,锁粗化,轻量级锁,偏向锁等 - lock使用的是乐观锁的机制,sync使用的是悲观锁