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

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

相关推荐
是小李呀~7 分钟前
【工作梳理】怎么把f12里面的东西导入到postman
java
攀小黑8 分钟前
Java 多线程加锁 synchronized 关键字 字符串当做key
java·开发语言
余华余华21 分钟前
2024年蓝桥杯Java B组省赛真题超详解析-分布式队列
java·职场和发展·蓝桥杯
破罐子不摔24 分钟前
【C#使用S7.NET库读取和写入西门子PLC变量】
java·c#·.net
可爱的霸王龙35 分钟前
JVM——模型分析、回收机制
java·jvm
神秘的t36 分钟前
javaSE————网络原理
java·网络
hongweihao38 分钟前
啥?有分布式锁都还能被突破
java·后端
BeerBear39 分钟前
记一次Kill <Pid> Java进程无法退出的问题处理
java·后端·spring
uhakadotcom1 小时前
Wolfram.com:解锁计算技术和知识管理的强大工具
前端·面试·github
Seven971 小时前
【Guava】IO工具
java