1. 如何用boolean型的版本号解决CAS的ABA问题?
  2. synchronized(this)和在成员方法上加锁一样
  3. synchronized(T.class)和在静态方法上加锁一样(锁的是类对象)
  4. 加了synchronized就不用再加volatile了,因为synchronized既保证了原子性有保证了可见性
  5. 设计小实验验证多线程或者虚拟机上理论的东西===>比如验证elder区满了之后会产生ygc
  6. 不说有没有问题,而是业务允不允许产生这样的问题(允许客户读到中间数据吗?===>允许脏读吗?)
  7. 加上了synchronized会让效率降低(100倍?)看业务允不允许,业务允许就不需要加
  8. 下去写的时候看面试题去写,而不是看代码去写,因为面试时没有代码

synchronized必须是可重入锁

  1. 父子类之间的继承会造成死锁
    1. 父类的m方法是synchronized的
    2. 子类继承了父类的m,并重写了m,在重写的m中调用了父类的m(super.m( ))
    3. 假如不可重入会造成死锁

synchronized的底层实现

  1. jdk早期的是重量级实现的===>每次都要找os去锁,所以效率很低
  2. 后来高并发的需求上来后,程序员不用synchronized了,用别的开源的框架了
  3. 所以jdk做了一些改进===>锁升级的概念===>《我就是厕所所长》(一、二)