Java全栈经典面试题剖析7】JavaSE高级 -- 多线程

目录

[面试题3.37 线程、进程的基本概念? 程序、进程、线程之间的关系?](#面试题3.37 线程、进程的基本概念? 程序、进程、线程之间的关系?)

[面试题3.38 什么是多线程](#面试题3.38 什么是多线程)

什么是线程安全?

[面试题3.39 启动线程的方式?start or run?](#面试题3.39 启动线程的方式?start or run?)

[面试题3.40 线程的生命周期? 线程运行状态?](#面试题3.40 线程的生命周期? 线程运行状态?)

[面试题3.41 线程的调度策略](#面试题3.41 线程的调度策略)

[面试题3.42 Java 中用到的线程调度算法是什么?](#面试题3.42 Java 中用到的线程调度算法是什么?)

[面试题3.43 在 java 中守护线程和用户线程区别?](#面试题3.43 在 java 中守护线程和用户线程区别?)


面试题3.37 线程、进程的基本概念? 程序、进程、线程之间的关系?

【技术难度: 1 出现频率:2 】

线程是程序执行的最小单元,是一个执行流程,一个执行路径。
进程是程序一次动态执行的过程,执行完毕的一个完整过程;

进程是线程和程序需要的资源的集合。线程是进程的一个子任务。


面试题3.38 什么是多线程

【技术难度: 1 出现频率:2 】

如果程序只有一条执行路径,该程序就是单线程程序;如果程序有多条执行路径,该程序就是多线程程序。

什么是线程安全?

在单线程情况下运行和在多线程情况下运行的结果相同。


面试题3.39 启动线程的方式?start or run?

【技术难度: 1 出现频率:2 】

调用Thread类对象的start()方法才是启动线程,run()方法是线程将要做的事,调用线程的run()只是在当前线程运行,不会启动另一个线程。


面试题3.40 线程的生命周期? 线程运行状态?

【技术难度: 2 出现频率: 2 】

第一层:

线程的生命周期分为5个状态:新建,就绪,运行,阻塞,死亡。

第二层:

1.创建状态是指刚new出来的线程对象;

2.就绪状态是指调用start()方法;

3.运行状态是指获得了CPU时间片;

4.等待/阻塞状态,比如调用sleep()、join()、wait()方法以及IO操作;

5.死亡状态是指run()方法结束。

扩展(无需背诵):


面试题3.41 线程的调度策略

【技术难度: 2 出现频率: 2 】

线程调度器选择优先级最高的线程运行,不过如果发生以下情况,就会终止线程的运行:

1.线程体中调用了yield()方法让出了对CPU的占用权利;

2.线程体中调用了sleep()方法使线程进入睡眠状态;

3.线程由于IO操作受到阻塞;

4.另外一个更高优先级线程出现;

5.在支持时间片的系统中,该线程的时间片用完。


面试题3.42 Java 中用到的线程调度算法是什么?

【技术难度:2 出现频率:1 】

采用时间片轮转的方式。可以设置线程的优先级,会映射到下层系统的优先级上,如非特别需要,尽量不要用,防止线程饥饿(得不到cpu执行权)。


面试题3.43 在 java 中守护线程和用户线程区别?

【技术难度: 1 出现频率:1 】

第一层:

java中的线程分为守护线程和用户线程。守护线程主要是在后台运行为用户线程提供服务,若所有用户线程结束后只剩下守护线程,JVM自动停止。

第二层:

创建守护线程可以通过Thread类的实例方法setDaemon(true)设置为守护线程,否则默认为用户线程。setDaemon()方法必须在start()启动线程前调用,否则抛异常。

扩展(无需背诵):

Daemon - 守护神

User - 用户


------------------------END-------------------------

才疏学浅,谬误难免,欢迎各位批评指正。

相关推荐
西峰u1 分钟前
Java多线程从入门到线程安全
java·开发语言·jvm
艾莉丝努力练剑2 分钟前
【AI大模型接入SDK】LLMManager类架构与智能指针选型
网络·c++·人工智能·学习·面试·架构
gis开发之家21 分钟前
Spring Boot 4 定时任务与异步线程池:从 @Scheduled 到高并发任务编排(生产级实战)
java·spring boot·后端·wpf·spring boot4
郑州光合科技余经理1 小时前
本地生活系统:多业务订单字段怎么分账本导出
java·开发语言·前端·数据库·uni-app·php·ai编程
YangYang9YangYan2 小时前
2026 校招审计风控岗位 JD 拆解,工具、专业能力与面试考点
java·大数据·人工智能·数据分析
wuminyu7 小时前
Kafka中sendfile与mmap实现机制解析
java·linux·c语言·jvm·c++
考虑考虑9 小时前
Java实现hmacsha256加密算法
java·后端·java ee
captain3769 小时前
▲网络原理(2)-TCP
java·服务器·网络·tcp/ip·java-ee
MetaLite9 小时前
SpringBoot接口分层规范-外网网关内部服务与参数边界
java·数据库·spring boot
Co_Hui9 小时前
Java 线程状态
java