Java线程并发高频面试题及详细答案(实战版).docxVIP

  • 1
  • 0
  • 约5.94千字
  • 约 8页
  • 2026-09-20 发布于河北
  • 举报

Java线程并发高频面试题及详细答案(实战版).docx

Java线程并发高频面试题及详细答案(实战版)

一、线程基础核心面试题

1.说说进程和线程的区别?

这是并发最基础的问题,核心区别在于资源隔离和调度粒度:

1)进程:是操作系统资源分配的最小单位,每个进程有独立的内存空间、堆、文件句柄等资源,进程之间完全隔离,互不干扰。进程切换开销极大,需要保存完整的进程上下文。

2)线程:是CPU调度的最小单位,一个进程包含多个线程,线程共享当前进程的堆内存、方法区、全局变量,仅私有栈、程序计数器、本地变量表。线程切换开销极小,只需要保存少量线程上下文。

简单总结:进程是资源容器,线程是执行单元;进程隔离、线程共享,进程开销大、线程轻量。

2.线程的生命周期有哪些状态?分别是什么场景?

Java线程一共6种状态,源码定义在Thread.State枚举中,日常面试重点区分阻塞、等待、超时等待的差异:

1)NEW(新建):线程对象创建完成,未调用start()方法,未启动。

2)RUNNABLE(可运行):包含就绪和运行两种状态,调用start()后进入该状态,等待CPU调度执行。

3)BLOCKED(阻塞):线程等待获取synchronized重量级锁,锁被其他线程占用时进入阻塞,锁释放后立即争抢。

6)TERMINATED(终止):线程代码执行完毕,或异常终止,生命周期结束。

3.start()和run()方法的区别?

1)run():只

文档评论(0)

1亿VIP精品文档

相关文档