synchronized 和 lock 锁的区别

来源:互联网 发布:python twisted过时 编辑:程序博客网 时间:2024/06/07 15:35

synchronized 锁只锁括号里面的代码内容,一个方法或者一个类等等。如果被锁的代码抛出异常会自动释放锁资源。

lock 锁锁定lock和unlock之间的代码,被锁的代码抛出异常不会自动释放锁资源,需要try catch 后在finally里面手动unlock释放锁资源。

lock锁可以同时执行多个read操作,但是只能同时一个write操作,所以lock锁在多资源竞争环境下效率较高,反之synchronized在资源竞争少的情况下更加安全可靠。

加锁时切忌锁定一些不必要的代码片段,如数据库操作等。