Q1: 线程创建方式? A: 分为“有返回结果”(3种)和“无返回结果”
Q2: 线程分类? A: 两种,哪两种?有什么特性?
Q3: 线程运行状态? A: 5个流程,分别对应代码那一部分?
Q4: 线程优先级? A: 两个方法的特点、设置优先级的范围
Q5: 如何让3个线程按顺序执行? A: 使用join方法,考虑具体如何实现?
Q6: 如何让3个线程按顺序执行? A: 使用join方法,考虑具体如何实现?
Q7: 线程安全的解决方案? A: 两种,考虑分别怎么使用
Q8: 线程安全的解决方案的原理? A: ?
Q9: 多线程死锁举例? A: ?
Q10: ThreadLocal的含义及实现原理? A: ?
Q11: volatile的特性以及与Synchronized区别? A: 3个特性(可见性、禁止重排序、性能),区别:原子性和性能(volatile不能保证原子性)
Q12: 重排序在单线程与多线程中的区别? A: 遵循的语义以及对结果是否改变这两方面考虑
Q13: JMM含义? A: 从共享变量和私有变量考虑
Q14: 多线程通讯? A: notify/notifyall 、wait、Lock、Condition,举例:设置姓名与性别”?
Q15: sleep和wait的区别? A: 从是否释放锁考虑
Q16: 并发包里的3个类的特点、对应的代码? A: CountDownLatch(计数器)、CyclicBarrier(屏障)、Semaphore(计数信号量)
Q17: 并发包里的非阻塞队列(ConcurrentLinkedDeque)和阻塞队列(BlockingQueue)特性? A:从适用场景、遵循原则考虑
Q18: 通过阻塞队列LinkedBlockingQueue来模拟生产者和消费者? A:offer与poll方法
Q19: 线程池的5个分类? A:newCahcedThreadPool(可复用线程的线程池)、newFixedThreadPool(定长线程池)、newSingleThreadExecutor(单个worker线程线程池)、newScheduleThreadPool(指定时间或延后执行的线程池)、newSingleThreadScheduledExecutor(单线程+定时执行执行线程池)
Q20: 线程池流程原理? A:提交线程 -> 核心线程数 -> 缓存队列 ->最大线程数 ->拒绝或创建并执行任务。
Q21: 如何合理配置线程池? A:线程等待时间越长,需要越多线程。线程CPU时间越高,需要越少线程。
Q22: 什么是重入锁,案例? A:内置锁与显示锁这方面考虑
Q23: 乐观锁与悲观锁含义及应用场景? A:数据库、version,是否操作。。。。。
Q24: 什么是CAS无锁及案例? A:CAS(V,E,N)分表表示什么,底层流程如何操作?
Q25: 什么是自旋锁? A:线程竞争不激烈,并且波爱吃锁的时间段,则推荐使用自旋锁?
Q26: 分布式锁有哪些,各自原理是什么? A:举例?
Q27: 原子类的特性? A:举例?AtomicInteger,CAS操作线程安全,高伸缩性
Q28: Disruptor框架? A:一种高效的“生产者-消费者”模式,使用队列(一种环形RingBuffer)实现,底层是数组。
03 New InsightsQ: 什么情况下使用volatile? A:volatile什么时候使用?什么时候,线程内存数据跟主内存数据进行交换、更新。