Java多线程面试题与答案
时间: 2024-06-09 18:07:12 浏览: 177
以下是一些Java多线程面试题以及它们的答案:
1. 什么是线程?
线程是操作系统能够进行运算调度的最小单位。在Java中,线程是轻量级的执行单元,可以和其他线程共享内存,但它们有各自的栈空间,执行不同的任务。
2. Java中如何创建线程?
Java中有两种方式创建线程:继承Thread类和实现Runnable接口。继承Thread类需要重写run()方法,实现Runnable接口需要实现run()方法,然后将其传入Thread类的构造方法中。
3. 线程的生命周期有哪些状态?
线程的生命周期有5种状态:创建状态、就绪状态、运行状态、阻塞状态和死亡状态。创建状态是指线程被创建但还没有启动;就绪状态是指线程已经准备好运行但还没有被调度;运行状态是指线程正在执行;阻塞状态是指线程暂停执行,等待某些条件满足后再继续执行;死亡状态是指线程执行完毕或者因为异常而终止。
4. 什么是线程安全?
线程安全是指多个线程同时访问共享资源时,不会产生不正确的结果。在Java中,可以使用synchronized关键字和Lock接口来实现线程安全。
5. 什么是死锁?
死锁是指多个线程因为互相等待对方释放资源而无法继续执行的一种情况。在Java中,可以使用synchronized关键字和Lock接口来避免死锁的发生。
6. 什么是volatile关键字?
volatile关键字可以保证线程之间的可见性,即一个线程修改了变量的值,其他线程可以立即看到修改后的结果。同时,volatile关键字也可以禁止指令重排序,保证代码的执行顺序。
7. 什么是线程池?
线程池是一种管理线程的机制,它可以在程序启动时预先创建一定数量的线程,并且将这些线程保存在一个池中,供需要执行任务的线程使用。线程池可以避免频繁创建和销毁线程的开销,提高程序的性能。在Java中,可以使用ThreadPoolExecutor类来实现线程池。
以上是常见的Java多线程面试题及答案,希望能够对您有所帮助。
阅读全文