synchronized(锁){}锁对象块同步代码块
- 注意事项
- 得写在循环的里面不然永远都是一个循环
lock可以手动上锁接口
必须使用他的实现类
Reentrantlock来实现
waiting
--------------------------------------
非原子性操作
加锁有三种方式
- synchronized关键词加方法上()同步锁互斥锁非显示锁不公平锁 独占锁
- synchronized(Object对象取名lock){包裹代码}同步代码块同步锁互斥锁非显示锁不公平锁 独占锁
- reetranlock()可重入锁显示锁
synchronized关键词可以保证同步锁(互斥锁)
- 具有线程独占性同一时刻只能有一个线程占有该同步锁锁的是方法
- 缺点执行效率可能低下
- 判断如果没有共享变量的操作下不需要用
步骤
- 所有线程执行抢锁
- 抢到的线程执行原子性方法
- 执行完方法释放锁
reetranlock()可重入锁显示锁
- 同一个线程可以多次获取该锁
- tryLockNanos()以纳秒为单位加锁
- new对象调用lock方法
- 关锁用unlock方法

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?