2025年高频java多线程并发面试题及答案.docxVIP

  • 2
  • 0
  • 约6.94千字
  • 约 12页
  • 2026-05-17 发布于四川
  • 举报

2025年高频java多线程并发面试题及答案.docx

2025年高频java多线程并发面试题及答案

线程与进程的本质区别是什么?进程是操作系统资源分配的基本单位,线程是CPU调度的基本单位。一个进程可包含多个线程,共享进程的堆和方法区资源,但每个线程有独立的程序计数器、虚拟机栈和本地方法栈。进程间通信需通过IPC(管道、消息队列、套接字等),线程间通信更轻量,可直接访问共享变量。

调用start()和直接调用run()方法的区别是什么?start()方法属于Thread类,会启动新线程并调用run()方法,遵循JVM的线程调度机制。直接调用run()方法等同于在当前线程执行普通方法调用,不会创建新线程。例如,执行newThread(()-{}).start()会创建新线程并异步执行任务,而直接调用run()则在主线程同步执行。

线程的生命周期包含哪些状态?Java中线程状态由Thread.State枚举定义,共6种:NEW(新建,未调用start())、RUNNABLE(可运行,包括操作系统的运行中或就绪状态)、BLOCKED(阻塞,等待监视器锁)、WAITING(无限等待,需其他线程唤醒)、TIMED_WAITING(超时等待,指定时间后自动唤醒)、TERMINATED(终止,执行完毕或异常退出)。状态转换典型路径:NEW→RUNNABLE(start())→BLOCKED(获取synchronized锁失败)→RUNNABLE(

文档评论(0)

1亿VIP精品文档

相关文档