【java八股问】java 多线程(下)

1、并发编程三要素?

2、实现可见性的方法有哪些?

3、多线程的价值?

4、创建线程的有哪些方式?

5、创建线程的三种方式的对比?

6、线程的状态流转图

7、Java 线程具有五中基本状态

8、什么是线程池?有哪几种创建方式?

9、四种线程池的创建?

10、线程池的优点?

11、常用的并发工具类有哪些?

12、CyclicBarrier 和 CountDownLatch 的区别

13、synchronized 的作用?

14、volatile 关键字的作用?

15、什么是 CAS?

16、CAS 的问题?

17、什么是 Future?

18、什么是 AQS?

19、AQS 支持两种同步方式?

20、ReadWriteLock 是什么?

21、FutureTask 是什么?

22、synchronized 和 ReentrantLock 的区别?

23、什么是乐观锁和悲观锁?

24、线程 B 怎么知道线程 A 修改了变量

25、synchronized、volatile、CAS 比较

26、sleep 方法和 wait 方法有什么区别?

27、ThreadLocal 是什么?有什么用?

28、为什么 wait()方法和 notify()/notifyAll()方法要在同步块中被调用这是 JDK 强制的,wait()方法和 notify()/notifyAll()方法在调用前都必须先获得对象的锁?

29、多线程同步有哪几种方法?

30、线程的调度策略线程调度器选择优先级最高的线程运行,但是,如果发生以下情况,就会终止线程的运行:

1、线程体中调用了 yield 方法让出了对 cpu 的占用权利
2、线程体中调用了 sleep 方法使线程进入睡眠状态
3、线程由于 IO 操作受到阻塞
4、另外一个更高优先级线程出现
5)在支持时间片的系统中,该线程的时间片用完

31、ConcurrentHashMap 的并发度是什么?

32、Linux 环境下如何查找哪个线程使用 CPU 最长

1、获取项目的 pid,jps 或者 ps -ef | grep java,这个前面有讲过
2、top -H -p pid,顺序不能改变

33、Java 死锁以及如何避免?

34、死锁的原因?

35、怎么唤醒一个阻塞的线程?

36、不可变对象对多线程有什么帮助?

37、什么是多线程的上下文切换?

38、如果你提交任务时,线程池队列已满,这时会发生什么?

39、Java 中用到的线程调度算法是什么?

40、什么是线程调度器(Thread Scheduler)和时间分片(Time Slicing)?

41、什么是自旋?

42、Java Concurrency API 中的 Lock 接口(Lock interface)是什么?对比同步它有什么优势?

43、单例模式的线程安全性?

44、Semaphore 有什么作用?

45、Executors 类是什么?

46、线程类的构造方法、静态块是被哪个线程调用的?

47、同步方法和同步块,哪个是更好的选择?

48、Java 线程数过多会造成什么异常?

posted @   xiangliheart  阅读(12)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
点击右上角即可分享
微信分享提示