Java线程基础面试大全
Posted General_kid
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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线程基础面试大全
以上是关于Java线程基础面试大全的主要内容,如果未能解决你的问题,请参考以下文章