- 如何用boolean型的版本号解决CAS的ABA问题?
- synchronized(this)和在成员方法上加锁一样
- synchronized(T.class)和在静态方法上加锁一样(锁的是类对象)
- 加了synchronized就不用再加volatile了,因为synchronized既保证了原子性有保证了可见性
- 设计小实验验证多线程或者虚拟机上理论的东西===>比如验证elder区满了之后会产生ygc
- 不说有没有问题,而是业务允不允许产生这样的问题(允许客户读到中间数据吗?===>允许脏读吗?)
- 加上了synchronized会让效率降低(100倍?)看业务允不允许,业务允许就不需要加
- 下去写的时候看面试题去写,而不是看代码去写,因为面试时没有代码
synchronized必须是可重入锁
- 父子类之间的继承会造成死锁
- 父类的m方法是synchronized的
- 子类继承了父类的m,并重写了m,在重写的m中调用了父类的m(super.m( ))
- 假如不可重入会造成死锁
synchronized的底层实现
- jdk早期的是重量级实现的===>每次都要找os去锁,所以效率很低
- 后来高并发的需求上来后,程序员不用synchronized了,用别的开源的框架了
- 所以jdk做了一些改进===>锁升级的概念===>《我就是厕所所长》(一、二)