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