java - synchronized多线程安全

Synchronized的作用
保证在同一时刻最多只有一个线程执行该段代码,以达到保证并行安全的效果。

Synchronized的两个用法

  1. 对象锁
    包括方法锁(默认锁对象为this当前实例对象)和同步代码块锁(自己指定锁对象)

  2. 类锁
    指synchronized修饰静态的方法或指定锁为Class对象

多线程访问同步方法的7种情况

  1. 两个线程同时访问一个对象的同步方法 (顺序执行)

  2. 两个线程访问的是两个对象的同步方法 (并行执行)

  3. 两个线程访问的是synchronized的静态方法 (顺序执行)

  4. 同时访问同步方法与非同步方法 (非同步方法不受影响)

  5. 访问同一个对象的不同的普通同步方法 (顺序执行)

  6. 同时访问静态synchronized和非静态synchronized方法(锁对象不同)

  7. 方法抛异常后,会释放锁

性质

  • 可重入: 同一线程的外层函数获得锁之后,内层函数可以直接再次获取该锁
  • 不可中断
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值