Java锁的概念和使用

介绍

问题:
    因为多个线程同时操作一个数据,会导致数据不安全
解决方法:
    使用锁将其封锁,包装对数据的操作同时只能有一个线程
注意:
    多个线程使用同一个锁

如何使用

同步代码块
    语法:
        synchronized(锁对象){
    
        }
    注意:所有类的对象都是锁对象
同步方法
    语法:
        访问权限修饰符 synchronized 返回值类型 方法名(形参列表){
            方法体
        }
    注意:谁调用同步方法,谁就是该同步的锁对象
    
同步静态方法
    语法:
        访问权限修饰符 static synchronized 返回值类型 方法名(形参列表){
            方法体
        }
    注意:同步静态方法的锁对象是该类的类对象,一个类就一个类对象

死锁

原因:
    多个线程互相持有对方所需的锁资源
如何避免
    尽量不要再同步代码块中使用同步代码块或同步方法
    尽量不要再同步方法中使用同步代码块或同步方法
    总结:尽量不要再同步中使用同步

线程间通讯

休眠
    wait(),在休眠时会释放锁对象

唤醒
    notify():
        随机唤醒一个以调用该方法的对象作为锁对象的无限期休眠的线程,
    notifyAll()
        唤醒所有使用该对象作为锁对象的正在无限期休眠的线程

注意:
    1,这三个方法是Object提供的
    2,必须在同步中使用
    3,必须使用锁对象调用

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值