Java 线程基础面试大全

  1. 有多少种实现线程的方法?典型错误答案和正确答案
  2. 实现 Runnable接口和继承 Thread类哪种方式更好?
  3. 个线程两次调用 start()方法会出现什么情况?为什么?
  4. 既然 start()方法会调用run()方法,为什么我们选择调用 start()方法,而不是直接调用run()方法呢?
  5. 如何正确停止一个线程?
  6. 如何处理不可中断的阻塞(例如抢锁时 ReentrantLock lock() 或者 Socket I/O 时无法响应中断,那应该怎么让该线程停止呢?)
  7. 线程有哪几种状态?生命周期是什么?
  8. 如何用wait()实现两个线程交替打印0~100的奇偶数?
  9. 为什么要使用生产者和消费者模式?
  10. 什么是生产者消费者模式?
  11. 如何用wait实现生产者模式?
  12. 为什么wait必须在同步代码块中使用?
  13. 为什么线程通信的方法wait(),notify()和notifyAll()被定义在Object类里?而sleep定义在 Thread类里?
  14. wait方法是属于Object对象的,那调用 Thread.wait会怎么样?
  15. 如何选择用notify还是nofityAll?
  16. notify之后所有的线程都会再次抢夺锁,如果某线程抢夺失败怎么办?
  17. 用suspend()和resume()来阻塞线程可以吗?为什么?
  18. wait/notify、sleep的异同?(方法属于哪个对象?线程状态怎么切换?)
  19. 在join期间,线程处于哪种线程状态?
  20. yield和sleep的区别?
  21. 守护线程和普通线程的区别?
  22. 我们是否需要给线程设置为守护线程?
  23. 为什么程序设计不应依赖于线程优先级?
  24. 讲讲Java异常体系?
  25. 实际工作中,如何全局处理异常?
  26. 为什么异常需要全局处理?不处理行不行?
  27. run方法是否可以抛出异常?如果抛出异常,线程的状态会怎么样?
  28. 共有哪几类线程安全问题?
  29. 哪些场景需要额外注意线程安全问题?
  30. 为什么多线程会带来性能问题?
  31. 何时会导致密集的上下文切换?
  32. 什么是多线程的上下文切换?
  33. Java代码如何一步步转化,最终被CPU执行?
  34. 单例模式的作用和适用场景
  35. 重排序的实例:单例模式多种写法、单例和高并发的关系?
  36. 单例各种写法的适用场合?
  37. 饿汉式的缺点?
  38. 懒汉式的缺点?
  39. 为什么要用double-check?不用就不安全吗?
  40. 为什么双重检查模式要用 volatile?
  41. 应该如何选择,用哪种单例的实现方案最好?为什么?
  42. 讲一讲什么是Java内存模型?
  43. 什么是 happens-before?
  44. Happens-Before规则有哪些?
  45. 讲讲volatile关键字?
  46. volatile的适用场合?
  47. volatile的作用?(两点)
  48. volatile和synchronized的异同
  49. 什么是以及为什么会有内存可见性问题?
  50. 你知道主内存和本地内存吗?什么是主内存和本地内存?
  51. 主内存和本地内存的关系?
  52. 什么是原子操作?
  53. Java中的原子操作有哪些?
  54. long和double的原子性你了解吗?
  55. 生成对象的过程是不是原子操作?
  56. 写一个必然死锁的例子?
  57. 生产中什么场景下会发生死锁?
  58. 发生死锁必须满足哪些条件?
  59. 如何用工具定位死锁?
  60. 有哪些解决死锁问题的策略?
  61. 避免策略和检测与恢复策略的主要思路是什么?
  62. 讲一讲经典的哲学家就餐问题?怎么解决?
  63. 实际开发中如何避免死锁?
  64. 什么是活跃性问题?活锁、饥饿和死锁有什么区别?
以上问题在以下文章均有详细解答:

实现多线程的方法是1种还是2种还是4种?
怎样才是正确的线程启动方式?
如何正确停止线程之interrupt的使用
如何正确停止线程之错误的停止方法
线程的6个状态(生命周期)
Thread和Object类中的重要方法详解
wait/notify实现生产者消费者模式
Thread和Object类中的重要方法之面试问题总结
实现两个线程交替打印0~100的奇偶数
Thread线程的各个属性
线程的未捕获异常如何处理?
双刃剑:多线程会导致的问题
单例模式的9种写法
Java内存模型
死锁
死锁——银行转账问题
死锁——哲学家就餐问题
活锁——牛郎织女的幸福生活
Java线程基础面试大全

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

✦昨夜星辰✦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值