• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

黄文超

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

多线程中的锁

多线程中的锁

1、java中什么是显式锁?

1、java中显式锁就是实现lock接口的对象,比如这个对象ReentrantLock。
2、在代码中它在代码中更容易看到锁,只需要lock方法上锁,unlock方法解锁就行
3、它的底层依赖于特定的cpu,可以认为不受JVM的影响。
4、它是可以中断的锁
5、选择下一个线程是非抢占式的,按照线程的排队顺序

2、java中什么是隐式锁

1、有synchronized修饰的锁,同步代码块的方式或者同步方法的方式
2、它是非中断的锁,一旦运行不能被中断,只能等它运行结束
3、在线程发生异常的时候,会自动释放锁,不会发生异常死锁
4、底层依赖于软件层面上的jvm
5、选择下一个程序是抢占式的,下一个线程随机选择

3、显式锁和隐式锁的区别

显式锁 隐式锁
能否中断 能 不能
线程异常,能否自动释放锁 不能 能
是否依赖jvm 是 不是
加锁是否公平 公平或者不公平 不公平

4、选择哪个会更好呢?

选择lock更好一点:
	1、lock更符合我们的面对对象思想去操作锁
	2、lock运行效率比synchronize更高一些

posted on 2021-03-25 18:35  黄文超  阅读(129)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3