Java|面试官:连多线程问题你都一问三不知,还要我怎么“放水”?( 二 )

  • 等待阻塞(o.wait->等待队列)
  • 同步阻塞(lock->锁池)
  • 其他阻塞(sleep/join)
5. 线程死亡(DEAD)
  • 正常结束
  • 异常结束
  • 调用 stop
5. 终止线程 4 种方式1. 正常运行结束
2. 使用退出标志退出线程
3. Interrupt 方法结束线程
4. stop 方法终止线程(线程不安全)
6. sleep 与 wait 区别

7. start 与 run 区别

8. JAVA 后台线程

9. JAVA 锁

1. 乐观锁
2. 悲观锁
3. 自旋锁
  • 自旋锁的优缺点
  • 自旋锁时间阈值(1.6 引入了适应性自旋锁)
  • 自旋锁的开启
4. Synchronized 同步锁
  • Synchronized 作用范围
  • Synchronized 核心组件
  • Synchronized 实现
5. ReentrantLock
  • Lock 接口的主要方法
  • 非公平锁
  • 公平锁
  • ReentrantLock 与 synchronized
  • ReentrantLock 实现
  • Condition 类和 Object 类锁方法区别区别
  • tryLock 和 lock 和 lockInterruptibly 的区别
6. Semaphore 信号量
  • 实现互斥锁(计数器为 1)
  • 代码实现
  • Semaphore 与 ReentrantLock
7. AtomicInteger
8. 可重入锁(递归锁)
9. 公平锁与非公平锁
  • 公平锁(Fair)
  • 非公平锁(Nonfair)
10. ReadWriteLock 读写锁
  • 读锁
  • 写锁
11. 共享锁和独占锁
  • 独占锁
  • 共享锁
12. 重量级锁(Mutex Lock)
13. 轻量级锁
  • 锁升级
14. 偏向锁
15. 分段锁
16. 锁优化
  • 减少锁持有时间
  • 减小锁粒度
  • 锁分离
  • 锁粗化
  • 锁消除
10. 线程基本方法

1. 线程等待(wait)
2. 线程睡眠(sleep)
3. 线程让步(yield)
4. 线程中断(interrupt)
5. Join 等待其他线程终止
6. 为什么要用 join()方法?
7. 线程唤醒(notify)
8. 其他方法
11. 线程上下文切换

1. 进程
2. 上下文
3. 寄存器
4. 程序计数器
5. PCB-“切换桢”
6. 上下文切换的活动
7. 引起线程上下文切换的原因
12. 同步锁与死锁

1. 同步锁
2. 死锁
13. 线程池原理

1. 线程复用
2. 线程池的组成
3. 拒绝策略
4. Java 线程池工作过程
14. JAVA 阻塞队列原理

1. 阻塞队列的主要方法
  • 【Java|面试官:连多线程问题你都一问三不知,还要我怎么“放水”?】插入操作
  • 获取数据操作
2. Java 中的阻塞队列
3. ArrayBlockingQueue(公平、非公平)
4. LinkedBlockingQueue(两个独立锁提高并发)
5. PriorityBlockingQueue(compareTo 排序实现优先)
6. DelayQueue(缓存失效、定时任务)


推荐阅读