synchronized(锁){}锁对象块同步代码块

  1. 注意事项
  2. 得写在循环的里面不然永远都是一个循环
lock可以手动上锁接口
必须使用他的实现类
Reentrantlock来实现
waiting
--------------------------------------
非原子性操作
加锁有三种方式
  1. synchronized关键词加方法上()同步锁互斥锁非显示锁不公平锁 独占锁
  2. synchronized(Object对象取名lock){包裹代码}同步代码块同步锁互斥锁非显示锁不公平锁 独占锁
  3. reetranlock()可重入锁显示锁
synchronized关键词可以保证同步锁(互斥锁)
  1. 具有线程独占性同一时刻只能有一个线程占有该同步锁锁的是方法
  2. 缺点执行效率可能低下
  3. 判断如果没有共享变量的操作下不需要用
步骤
  1. 所有线程执行抢锁
  2. 抢到的线程执行原子性方法
  3. 执行完方法释放锁
reetranlock()可重入锁显示锁
  1. 同一个线程可以多次获取该锁
  2. tryLockNanos()以纳秒为单位加锁
  3. new对象调用lock方法
  4. 关锁用unlock方法
0
  1.  
posted @   晴天晴yyysss  阅读(42)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示