当前位置: 首页 > news >正文

Java多线程面试题

1.进程和线程的区别

程序由指令数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU中,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的。

当一个程序被运行,从磁盘加载这个程序的代码到内存中,这时就开启了一个进程。


什么叫做进程:当一个程序被允许,从磁盘加载到这个程序的代码至内存,这时就开启了一个进程。(比如:打开QQ软件,QQ运行后就是一个进程)

什么叫做线程:线程就是一个指令流,将指令流中的一条条指令以一定顺序交给CPU执行。

进程和线程的区别​​​​​​​:

​​​​​​​

  • 进程是正在运行程序的实例,进程中包含了多个线程,每个线程执行不同的任务。
  • 不同的进程使用不同的内存空间(QQ进程与微信进程使用的内存空间是不同的),当前进程下的所有线程可以共享内存空间。
  • 线程比进程更轻量,线程上下文切换成本一般比进程低(上下文切换指的是一个线程切换到另一个线程)

2.并行和并发的区别

两种情况:单核CPU和多核CPU

1.单核CPU

  • 单核CPU下线程实际还是串行执行的
  • 操作系统中有一个组件叫做任务调度器,将cpu的时间片(windows下时间片最小约为 15 毫秒)分给不同的程序使用,只是由于cpu在线程间(时间片很短)切换的速度非常快,给人的感觉是同时运行的 。
  • 总结为一句话就是: 微观串行,宏观并行
  • 一般会将这种线程轮流使用CPU的做法称为并发(concurrent

2.多核CPU

每个核(core)都可以调度运行线程,这时候线程可以是并行的。

3.并行和并发有什么区别?

并发(concurrent)是同一时间应对dealing with)多件事情的能力,(在同一刻时间上,还是只做一件事)

并行(parallel)是同一时间动手做doing)多件事情的能力,(同一刻时间内,多核CPU同时做多件事)

4.总结

现在都是多核CPU,在多核CPU

并发是同一时间应对多件事情的能力,多个线程轮流使用一个或多个 CPU
并行是同一时间动手做多件事情的能力, 4 CPU 同时执行 4 个线程


http://www.mrgr.cn/news/47676.html

相关文章:

  • 预训练语言模型——BERT
  • LangChain 学习笔记
  • vue实现虚拟列表滚动
  • 【网络协议】IPv4 地址分配 - 第一部分
  • AIDD-人工智能药物设计-人工智能破解酶稳定性定向进化中的多个突变位点高效重组问题
  • 网络与信息安全概论-期末复习
  • 融入、成长与创造 - 数字经济浪潮下的个人转型
  • 论文阅读笔记-Incorporating Copying Mechanism in Sequence-to-Sequence Learning
  • QFontComboBox Class
  • Redis 数据类型list(列表)
  • 系统架构设计师教程 第16章 16.2 嵌入式系统软件架构原理与特征 笔记
  • 十、索引优化与查询优化
  • 解决 IntelliJ IDEA 运行时 “Command line is too long“ 问题
  • 地级市-专利申请与获得情况(1990-2022年)
  • 2024年编程资料【9月份部分】
  • Keil生成lst文件,creating preprocessor file
  • 【分布式技术】简单聊聊什么是区块链
  • 【拥抱AIGC】应该如何衡量AI辅助编程带来的收益
  • 大数据开发基础实训室设备
  • Java项目实战II基于Java+Spring Boot+MySQL的中药实验管理系统(源码+数据库+文档)
  • Spring MVC:精通JSON数据返回的几种高效方式
  • 数据库数据加密的实际作用
  • ElasticsearchClient入门指南
  • 如何使用子查询(Subquery)?
  • 【openwrt-21.02】T750 openwrt 出现nat46_ipv4_input+0x90/0x4b4问题分析及解决方案
  • YOLOv11训练自己数据集_笔记1