目录
二、为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用 run() 方法?
五、为什么 wait(), notify()和 notifyAll()必须在同步方法或者同步块中被调用?
九、请谈谈 volatile 有什么特点,为什么它能保证变量对所有线程的可见性?
十、为什么说 Synchronized 是一个悲观锁?乐观锁的实现原理又是什么?什么是 CAS,它有什么特性?
十二、请尽可能详尽地对比下 Synchronized 和 ReentrantLock 的异同。
十五、跟 Synchronized 相比,可重入锁 ReentrantLock 其实现原理有什么不同?
二十二、线程池中的线程是怎么创建的?是一开始就随着线程池的启动创建好的吗?
二十四、既然 volatile 能够保证线程间的变量可见性,是不是就意味着基于 volatile 变量的运算就是并发安全的?