Java 并发面试题题库

目录

 多线程基础

1. 线程和进程有什么区别?

2. 创建线程的三种方式的对比?

3. 为什么要使用多线程呢?

4. 线程的状态流转

5. 什么是线程死锁?如何避免死锁? 死锁 死锁必须具备以下四个条件: 如何避免线程死锁?

6. 常见的对比 Runnable VS Callable shutdown() VS shutdownNow() isTerminated() VS isShutdown()

7. sleep() 方法和 wait() 方法区别和共同点? 区别 相同

8.为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用 run() 方法

9. Thread类中的yield方法有什么作用?

10. 谈谈volatile的使用及其原理

11. 如何创建线程实例并运行?

12. 线程阻塞的三种情况

13. 线程死亡的三种方式

14. 为什么我们调用start()方法时会执行run()方法,为什么我们不能直接调用run()方法?

15. 守护线程是什么?

 16. 了解Fork/Join框架吗?

17. CAS了解吗?

18. CAS有什么缺陷?

19. synchronized 和 volatile 的区别是什么?

20. synchronized 和 Lock 有什么区别?

21. synchronized 和 ReentrantLock 区别是什么?

22. synchronized的用法有哪些?

23. Synchronized的作用有哪些?

24. 说一下 synchronized 底层实现原理?

25. 多线程中 synchronized 锁升级的原理是什么?

26. synchronized 为什么是非公平锁?非公平体现在哪些地方?

27. JVM对synchronized的优化有哪些?

28. synchronized 锁能降级吗?

29. ThreadLocal是什么?

30. ThreadLocal的实现原理

31. 知道ThreadLocal 内存泄露问题吗?

32. 了解ReentrantLock吗?

33. ReadWriteLock是什么?

线程池专题

1. 为什么要用线程池?

2. 执行execute()方法和submit()方法的区别是什么呢?

3. 说下线程池核心参数?

4. 线程池执行任务的流程?

5. 常用的JAVA线程池有哪几种类型?

6. 线程池常用的阻塞队列有哪些?

7. 源码中线程池是怎么复用线程的?

8. 如何合理配置线程池参数?

9. Executor和Executors的区别?

AQS

1. 说一说什么是AQS?

2. AQS使用了哪些设计模式?

3. 了解AQS中同步队列的数据结构吗?

4. 了解AQS 对资源的共享方式吗?

5. AQS 组件了解吗?

Atomic 原子类

1. 介绍一下 Atomic 原子类

2. JUC 包中的原子类是哪4类?

3. 简单介绍一下 AtomicInteger 类的原理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值