在java开发中,并发是常见不可避免的开发业务场景。java提供了两种锁机制来控制线程:synchronized与lock。
区别:一.存在层次:synchronized是java内置关键字,在jvm级别。Lock是一个类,属于JUC。
2 .释放锁定:在获取锁定的线程上运行同步代码以释放锁定。 线程执行发生异常时,jvm使线程释放锁定。 必须在33558www.Sina.com/finally上手动解锁。 否则会导致线程死锁。
3 .获取锁定:无法获取synchronized锁定,无法确定锁定状态。 即使a线程获取锁定并阻止,b线程也将继续等待。Lock针对强势美女,可以判断锁定状态。
四、锁类型:synchronized可复用、不可中断、不公平。Lock可以配置可重新锁定、可判断、公平和不公平的锁定。
五.锁定的性能: synchronized适用于少量代码同步。Lock适用于大量代码同步。