并发
- 并发的三个特性是什么?
- 什么是指令重排序?
- 单线程的指令重排序靠什么保证正确的结果?
- 原子性操作有哪些?
- 赋值操作都属于原子性操作吗?
- sychronized和lock如何保证可见性?
内存模型
- 什么是缓存一致性问题?
- 缓存一致性协议原理?
- 线程工作内存与主存同步的时机?
- println()为什么和volatile,sychronize一样都可以做到上述同步?
volatile
- 保证了并发的哪个特性?
- 作用?
- 原理?
- 应用场景?
- 变量多个线程读写原则是什么?
锁
http://ifeve.com/java-synchronized/
- 什么是CAS?
- 对于同步方法,同步静态方法,同步对象,锁的对象分别是什么?
- jvm角度分析锁同步的原理。用什么方法,取得什么的所有权?
- 锁的四种状态或者类型?
- 什么是自旋和膨胀?
偏向锁
- 竞争机制?
- 获得和撤销流程?
- 使用场景?
轻量级锁
- 竞争机制?
- 获得和撤销流程?
- 使用场景?
线程
- 线程的五个状态调度图?
- blocked的三种情况?
- run和start区别?
notify, wait, yield, join
- wait是使哪个线程等待?
- notify和wait为什么定义在object中而不是thread中?
- yield让出的是什么?
- yield和wait的区别?
- join的作用?
- 为什么son.join()是让主线程等待?
interrupt
Java多线程系列--“基础篇”09之 interrupt()和线程终止方式
- 作用?
- interrupt阻塞状态线程过程?
- 如何中止while(true)的线程?
- interrupt运行状态线程过程?
- interrupted()和isinterrupted()区别?
守护线程定义?
线程池 ThreadPoolExecutor
Java - "JUC线程池" ThreadPoolExecutor原理解析
- 类结构?
- worker作用?
- blockingQueue作用?
- mainlock作用?
- corePool和maxPool处理逻辑?
- handler作用?
- 线程池的五个状态?
- stop和shutdown区别?
线程拒绝策略
http://www.cnblogs.com/skywang12345/p/3512947.html#a21
- abort, discard, discardoldest, callerruns区别
- 适用场景?
callable和future
Java多线程系列--“JUC线程池”06之 Callable和Future
- callable作用与用法?
- future作用与用法?
- callable与runable区别?
- futuretask与他们的关系?
- 他们的源码实现?