Java并发--高频面试题

112 阅读1分钟

1. Java 线程池?

  1. 池化思想
  2. 线程池的使用方式
  3. 同步队列 & 线程工厂 & 拒绝策略

线程池详解(ThreadPoolExecutor)

2. 守护线程与非守护线程?

守护线程

3. notify() 与 wait() 的使用?

  1. wait()方法必须在当前获取的锁对象上调用
  2. 如何让等待的线程被重新唤醒,然后从wait()方法返回?答案是在相同的锁对象上调用notify()方法

使用wait和notify

4. 线程池中 submit() 和 execute() 方法有什么区别?

submit方法可以获取到任务返回值或任务异常信息,execute方法不能获取任务返回值和异常信息。

5. synchronized 原理及锁升级?

Java并发--synchronized的实现原理及锁优化

6. 线程中断的作用?

一文搞懂 Java 线程中断

7. AQS框架、ReentrantLock、countDownLatch 的实现原理?

Java并发之AQS详解

8. ThreadLocal 的原理?

  1. Thread 对象里存储有 ThreadLocalMap
  2. ThreadLocalMap 是一个哈希表,key 是 threadLocal 实例,value 是共享变量的副本
  3. 注意 ThreadLocal 使用完后要进行 remove,否则 value 值还可能会存在内存泄漏
  4. 实现原理直接阅读 Java 源码就可以了

参考阅读

  1. 2023年高频Java面试题集锦(含答案),让你的面试之路畅通无阻!