Java线程基础面试大全

【Java线程基础面试大全】古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。这篇文章主要讲述Java线程基础面试大全相关的知识,希望能为你提供帮助。

  • 有多少种实现线程的方法?典型错误答案和正确答案
  • 实现 Runnable接口和继承 Thread类哪种方式更好?
  • 个线程两次调用 start()方法会出现什么情况?为什么?
  • 既然 start()方法会调用run()方法,为什么我们选择调用 start()方法,而不是直接调用run()方法呢?
  • 如何正确停止一个线程?
  • 如何处理不可中断的阻塞(例如抢锁时 ReentrantLock lock() 或者 Socket I/O 时无法响应中断,那应该怎么让该线程停止呢?)
  • 线程有哪几种状态?生命周期是什么?
  • 如何用wait()实现两个线程交替打印0~100的奇偶数?
  • 为什么要使用生产者和消费者模式?
  • 什么是生产者消费者模式?
  • 如何用wait实现生产者模式?
  • 为什么wait必须在同步代码块中使用?
  • 为什么线程通信的方法wait(),notify()和notifyAll()被定义在Object类里?而sleep定义在 Thread类里?
  • wait方法是属于Object对象的,那调用 Thread.wait会怎么样?
  • 如何选择用notify还是nofityAll?
  • notify之后所有的线程都会再次抢夺锁,如果某线程抢夺失败怎么办?
  • 用suspend()和resume()来阻塞线程可以吗?为什么?
  • wait/notify、sleep的异同?(方法属于哪个对象?线程状态怎么切换?)
  • 在join期间,线程处于哪种线程状态?
  • yield和sleep的区别?
  • 守护线程和普通线程的区别?
  • 我们是否需要给线程设置为守护线程?
  • 为什么程序设计不应依赖于线程优先级?
  • 讲讲java异常体系?
  • 实际工作中,如何全局处理异常?
  • 为什么异常需要全局处理?不处理行不行?
  • run方法是否可以抛出异常?如果抛出异常,线程的状态会怎么样?
  • 共有哪几类线程安全问题?
  • 哪些场景需要额外注意线程安全问题?
  • 为什么多线程会带来性能问题?
  • 何时会导致密集的上下文切换?
  • 什么是多线程的上下文切换?
  • Java代码如何一步步转化,最终被CPU执行?
  • 单例模式的作用和适用场景
  • 重排序的实例:单例模式多种写法、单例和高并发的关系?
  • 单例各种写法的适用场合?
  • 饿汉式的缺点?
  • 懒汉式的缺点?
  • 为什么要用double-check?不用就不安全吗?
  • 为什么双重检查模式要用 volatile?
  • 应该如何选择,用哪种单例的实现方案最好?为什么?
  • 讲一讲什么是Java内存模型?
  • 什么是 happens-before?
  • Happens-Before规则有哪些?
  • 讲讲volatile关键字?
  • volatile的适用场合?
  • volatile的作用?(两点)
  • volatile和synchronized的异同
  • 什么是以及为什么会有内存可见性问题?
  • 你知道主内存和本地内存吗?什么是主内存和本地内存?
  • 主内存和本地内存的关系?
  • 什么是原子操作?
  • Java中的原子操作有哪些?
  • long和double的原子性你了解吗?
  • 生成对象的过程是不是原子操作?
  • 写一个必然死锁的例子?
  • 生产中什么场景下会发生死锁?
  • 发生死锁必须满足哪些条件?
  • 如何用工具定位死锁?
  • 有哪些解决死锁问题的策略?
  • 避免策略和检测与恢复策略的主要思路是什么?
  • 讲一讲经典的哲学家就餐问题?怎么解决?
  • 实际开发中如何避免死锁?
  • 什么是活跃性问题?活锁、饥饿和死锁有什么区别?
  • 以上问题在以下文章均有详细解答: 实现多线程的方法是1种还是2种还是4种?
    怎样才是正确的线程启动方式?
    如何正确停止线程之interrupt的使用
    如何正确停止线程之错误的停止方法
    线程的6个状态(生命周期)
    Thread和Object类中的重要方法详解
    wait/notify实现生产者消费者模式
    Thread和Object类中的重要方法之面试问题总结
    实现两个线程交替打印0~100的奇偶数
    Thread线程的各个属性
    线程的未捕获异常如何处理?
    双刃剑:多线程会导致的问题
    单例模式的9种写法
    Java内存模型
    死锁
    死锁——银行转账问题
    死锁——哲学家就餐问题
    活锁——牛郎织女的幸福生活
    Java线程基础面试大全

    推荐阅读