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-------------------------

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

相关推荐
qq_12498707531 小时前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计
Coder_Boy_1 小时前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端
Mr_sun.1 小时前
Day06——权限认证-项目集成
java
瑶山1 小时前
Spring Cloud微服务搭建四、集成RocketMQ消息队列
java·spring cloud·微服务·rocketmq·dashboard
abluckyboy1 小时前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法
2301_818732061 小时前
前端调用控制层接口,进不去,报错415,类型不匹配
java·spring boot·spring·tomcat·intellij-idea
发现一只大呆瓜1 小时前
AI流式交互:SSE与WebSocket技术选型
前端·javascript·面试
园小异1 小时前
2026年技术面试完全指南:从算法到系统设计的实战突破
算法·面试·职场和发展
2501_941982051 小时前
深度对比:Java、Go、Python 实现企微外部群推送,哪个效率更高?
java·golang·企业微信
马猴烧酒.2 小时前
【面试八股|JAVA多线程】JAVA多线程常考面试题详解
java·服务器·数据库