Java 线程变量核心面试题(含详细接地气答案).docxVIP

  • 1
  • 0
  • 约3.66千字
  • 约 5页
  • 2026-07-27 发布于河北
  • 举报

Java 线程变量核心面试题(含详细接地气答案).docx

Java线程变量核心面试题(含详细接地气答案)

说明:所有题目均为面试高频原题,答案摒弃模板化话术,以开发实操、面试官打分标准编写,适合面试背诵、复盘查漏补缺。

一、基础概念题(入门必问)

1.Java中成员变量、局部变量、静态变量,哪个是线程安全的?为什么?

参考答案:

只有局部变量是天然线程安全的,成员变量和静态变量都是非线程安全的。

核心原理:

1.局部变量(方法内定义):存储在虚拟机栈中,每个线程都有自己独立的栈空间,线程之间互不共享、互不干扰,所以绝对安全,不需要加锁。

2.成员变量(实例变量):存在堆内存中,归对象所有。如果多个线程共用同一个对象,会并发读写同一个变量,出现数据覆盖、脏数据问题,线程不安全。

3.静态变量(static修饰):存在方法区,归类所有,全局所有线程共享,并发场景下极易出现线程安全问题。

实战总结:写代码时,尽量把可变变量定义在方法内;必须用成员变量时,要做并发控制(加锁、ThreadLocal、原子类)。

2.为什么局部变量不存在线程安全问题?

参考答案:

根本原因是栈内存线程私有。

Java虚拟机执行方法时,会为每个线程单独创建一个栈帧,局部变量就保存在当前线程的栈帧里。多个线程同时执行同一个方法,各自操作的是自己栈里的变量,不会互相读写、互相覆盖,所以不存在竞争问题,自然线程安全。

补充:如果局部变量是引用类型,且把对象实例

文档评论(0)

1亿VIP精品文档

相关文档