Java lock和synchronized有什么区别?

事情起源

天气晴朗,万里无云,我在群中随便了问了个问题。

问题如下:

在这里插入图片描述
震惊,我只能说震惊!根据当事人不知道叫什么,咱们况且先叫某猫吧!

看到这个回答我也是惊掉下巴了,一本正经的回答,还tn的都挺对。

区别

  • synchronized是虚拟机(JVM)里面的静态函数,而Lock是Java对象类,还是一个接口。
  • synchronized是自动上锁、解锁的,相对于Lock来说,需要手动调用lock()和unLock()完成上锁解锁
  • lock可以配置公平策略,实现线程按照先后顺序获取锁。相对来说更加灵活。
  • lock还是公平锁和非公平锁,默认是非公平锁,如果需要公平锁,直接创建时,ReentrantLock(true)创建对象括号中传送true是公平锁。

猜你喜欢

转载自blog.csdn.net/u014641168/article/details/129956956