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

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

相关推荐
Jinkxs2 小时前
基础14-Java集合框架:掌握List、Set和Map的使用
java·list
遗憾皆是温柔2 小时前
3.JVM,JRE和JDK的关系是什么
java·开发语言·jvm·面试
洛可可白3 小时前
Spring Boot 应用结合 Knife4j 进行 API 分组授权管理配置
java·spring boot·后端
22:30Plane-Moon4 小时前
初识SpringBoot
java·spring boot·后端
黄昏晓x5 小时前
数据结构----排序
java·数据结构·排序算法
97zz5 小时前
项目配置文件正确但是启动失败,报配置文件内容错误或中间件地址与实际不符
java·中间件·springboot
拾光拾趣录6 小时前
H5适配9大高频题连环炸!第3问90%人翻车?
前端·面试
小醉你真好6 小时前
Spring Boot + ShardingSphere 分库分表实战
java·spring boot·后端·mysql
拾光拾趣录6 小时前
8道题穿透前端原理层
前端·面试
Vdeilae6 小时前
IIS 让asp.net core 项目一直运行
java·服务器·asp.net