synchronize和lock区别

synchronize是java的关键字,可以作用在方法上,代码块上,通过jvm来控制锁的获取与释放,它提供的是非公平锁,不能够手动释放锁,当代码执行完毕或者抛出异常由jvm放弃锁。

lock是juc下面的一个接口,提供了对锁的一些操作规范,需要手动获取锁和释放锁,通常在finally中释放。

lock响应中断。

lock的实现类为reentrentlock,意味着他和synchronize同样具有可重入性,而默认为非公平锁(构造器约定),可以设置为公平锁。还提供了其他API,如trylock,可以尝试去获取锁,同时提供了超时时间。另一个锁reentrentreadwritelock,则侧重于读写操作的性能优化,能够在读取的时候上读锁,多线程可同时访问,在进行写操作的时候则需要等待读锁释放,并允许同步操作。

推荐文章:https://www.cnblogs.com/handsomeye/p/5999362.html?from=singlemessage

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容