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

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

相关推荐
程序员爱钓鱼12 分钟前
Python编程实战——Python实用工具与库:Numpy基础
后端·python·面试
wheeldown16 分钟前
【Linux】Linux 地址空间 + 页表映射的概念解析
java·linux·jvm
源码宝20 分钟前
一套随访系统源码,医院随访管理系统源码,三级随访平台源码,技术框架:Java+Spring boot,Vue,Ant-Design+MySQL5
java·源码·软件开发·程序·随访·随访系统源码·三级随访
♡喜欢做梦22 分钟前
Spring IOC
java·后端·spring
拾忆,想起35 分钟前
TCP滑动窗口:网络世界的“智能流量阀门”
java·网络·数据库·网络协议·tcp/ip·php·哈希算法
摇滚侠40 分钟前
Spring Boot3零基础教程,Reactive-Stream 发布订阅写法,笔记104 笔记105
java·spring boot·笔记
晨非辰1 小时前
【数据结构初阶】--从排序算法原理分析到代码实现操作,参透插入排序的奥秘!
c语言·开发语言·数据结构·c++·算法·面试·排序算法
laplace01233 小时前
Java八股—MySQL
java·mysql·oracle
熙客4 小时前
TiDB:分布式关系型数据库
java·数据库·分布式·tidb
你想考研啊5 小时前
linux安装jdk和tomcat和并自启动
java·linux·tomcat