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

java中的进程的详细解析

JavaEE 初阶进程一、操作系统操作系统是计算机中的一个重要软件。操作系统是一个搞管理的软件管理各种硬件设备给各种应用程序提供一个稳定的运行环境这些应用程序在运行中即使有一个应用程序发生bug崩溃了也不会影响其他应用程序的执行。操作系统中的重要概念进程• 运行起来的程序就叫进程。站在操作系统的视角如何管理进程先描述使用结构体描述出进程的核心属性进程控制块PCB非常大的结构体有很多个属性。再把多个进程组织起来比如Linux这样的操作系统使用链表这样的方式把每个PCB串一起。•操作系统本身也是一个软件也是由一系列指令构成的在启动时CPU依次执行操作系统上的这些指令引导操作系统起来• 所有的软件本质上都是靠CPU来执行的CPU具体执行哪些指令一定程度上受操作系统的影响。文件描述符进程在运行过程中很多时候需要和硬盘这个硬件设备进行交互。硬盘上的数据就是以文件的形式来组织的。进程在读写文件的时候就需要打开文件每个打开的文件相关的信息保存到文件描述符中文件的每一项都对应着打开了的一份文件。操作系统中会把很多资源抽象成文件来表示所以“文件”不只是硬盘上的类例网卡操作系统管理网卡的时候就是当作“文件”一样来管理二、进程的运行•进程的运行也会依赖到硬盘、网卡等相关硬件设备•进程运行执行指令都是靠CPU的。进程是操作系统中负责分配CPU的基本单位。分时复用把一个单位时间分成很多份分别执行不同进程的指令第一份执行进程1指令第二份执行进程2的指令……因为CPU的运行速度是特别快所以在切换的过程中人眼很难察觉出变化了像同时执行一样。把一个CPU核心上按照分时复用执行多个进程就叫“并发执行”多个进程在一个CPU核心上在不同单位时间内执行。把多个CPU核心上同时执行多个进程称为“并行执行”多个进程在多个CPU核心上同时执行进程状态New(新建)RUNNABLE(可运行)BLOCKED(阻塞)WAITING(等待)TIMED_WAITING(超时等待)TERMINATED(终止)进程有多种状态下面是两个典型1就绪状态 → 随时可以到CPU上执行2阻塞状态 → 进程当前不适合到CPU上执行进程有优先级为了保证需要大量CPU资源能的正常执行进程的上下文因为有进程调度一个进程执行一会就会让出CPU这期间CPU执行它会保存上次执行的状态多进程继续执行进程在CPU中运行的过程中CPU上的各种寄存器就保存了当前进程运行的“中间状态”寄存器上关于进程的信息存放在内存中PCB自己也会有对应空间恢复时把PCB中刚才保存的属性填回CPU的寄存器。进程的记账信息统计功能统计每个进程在CPU上运行了多久如果发现某个进程 很久没有吃到CPU资源就会给它资源倾斜一点之后防止这个进程饿死new(新建)runnable(可运行)、blocked(阻塞)、waiting(等待)timed_waiting(超时等待) terminated(终止)三、多线程进程整体是一个比较“重”的概念创建进程/销毁进程开销比较大为了解决上述问题引入线程轻量级进程创建销毁开销小每个进程都相当于一个要执行的任务每个线程也是一个要执行的任务进程包含线程每个进程中都会包含一个或多个线程进程是操作系统资源分配的基本单位进程内部所包含的多个线程之间会共享上述的内存资源和硬盘资源网络带宽。进程创建需要申请资源进程的销毁需要释放资源→ 重量级事物代价大时间消耗对于线程来说只是第一个线程创建的时候和进程一起创建申请资源后续再创建线程不再手动到资源申请操作内核少快只有所有的线程都销毁进程销毁才会释放资源单个进程销毁某个线程也不会释放资源。可以理解为在进程创建的时候给线程创建了一次资源后续线程的创建和销毁都在这一层只有进程被销毁这一次资源才会被回收。关于线程的调度是随机的我们的程序是感知不到也干预不了。那怎么提高效率​引入多个线程 确实可以提升效率 但是资源一旦 就那么多引入过多线程会使上下文切换开销增长因为调度开销会拖累程序的性能。而且其中一个线程抛出异常会带走整个进程所有的线程都无法运行。如果及时捕获也不一定 终导致进程终止。创建第一个线程classMyThreadextendsThread{Overridepublicvoidrun(){System.out.println(hello);try{Thread.sleep(1000);}catch(InterruptedExceptione){// throw new RuntimeException(e); // 处理异常的手段抛出异常导致程序异常终止break;}}}publicclassTest{publicstaticvoidmain(String[]args){ThreadtnewMyThread();t.start();// 开启线程}}其中 Thread.sleep(); 会休眠例Thread.sleep(0);这里是 让此线程放弃当前CPU资源给别的线程用在run()方法内Thread.sleep()会抛出异常但无法throws只能使用try{} catch{}来捕获。每个线程调度顺序是随机的无法预测。“抢占式执行”创建线程的方法继承 Thread重写 run实现 Runnable 接口重写 run例Runnable runnable new MyRunnable();Thread t new Thread(runnable);classMyRunnableimplementsRunnable{Overridepublicvoidrun(){System.out.println(我自己的 Runnable 的 run 方法);}}publicclassDeano01{publicstaticvoidmain(String[]args){Runnabler1newMyRunnable();Threadt1newThread(newMyRunnable());Threadt2newThread(r1);t1.start();t2.start();}}classMyThreadextendsThread{Overridepublicvoidrun(){System.out.println(我自己的 Thread 的 run 方法);}}publicclassDeano01{publicstaticvoidmain(String[]args){// 1. 自己实现一个自己的Threa类ThreadtnewMyThread();t.start();// 2. 使用 lamabda 表达式Threadt1newThead(()-{System.out.println(我自己的 Thread 的 run 方法);});}}这个接口中只有一个无参返回值的 run 方法可以使用 lambda 表达式 () - { 要执行的代码 }在括号里没有参数!

相关文章:

java中的进程的详细解析

JavaEE 初阶(进程) 一、操作系统 操作系统是计算机中的一个重要软件。 操作系统是一个搞管理的软件: 管理各种硬件设备给各种应用程序提供一个稳定的运行环境, 这些应用程序在运行中,即使有一个应用程序发生bug崩溃了&…...

ViGEmBus虚拟游戏控制器驱动:从入门到精通的完整指南

ViGEmBus虚拟游戏控制器驱动:从入门到精通的完整指南 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus ViGEmBus是Windows系统上强大的虚拟游戏控制…...

Linux Capabilities(能力机制)细分学习

文章目录一. 网络相关 (Network)二. 系统与内核管理 (System & Kernel)三. 进程与信号管理 (Process & Signal)四. 文件系统与存储 (Filesystem & Storage)五. 审计与安全 (Audit & Security)六. IPC (进程间通信)七 在 Docker/K8s 中使用7.1. 只赋予网络管理能…...

ViGEmBus:让Windows游戏外设兼容性不再是难题

ViGEmBus:让Windows游戏外设兼容性不再是难题 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 你是否曾经遇到过心爱的游戏手柄在Windows上无法被…...

Agent相关面试

Agent高频面试题1. 一分钟讲清楚 Agent 的定义Agent 是以大模型为推理大脑,具备感知、思考、规划、工具调用、记忆、执行迭代能力的智能体。不再是简单问答,而是能自主拆解复杂任务、自主选择工具、自主多轮推理、记忆上下文、闭环完成目标,可…...

LNMP架构拆分实战:从单机到分布式集群的演进与优化

1. 项目概述:从单机LNMP到分布式架构的必然演进如果你正在运维一个基于LNMP(Linux, Nginx, MySQL/MariaDB, PHP)架构的网站,并且发现随着用户量的增长,网站响应越来越慢,甚至偶尔出现数据库连接失败、页面加…...

QMCDecode终极指南:3步搞定QQ音乐加密文件,让音乐真正属于你

QMCDecode终极指南:3步搞定QQ音乐加密文件,让音乐真正属于你 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录…...

5分钟极速上手:bili2text - B站视频转文字终极指南

5分钟极速上手:bili2text - B站视频转文字终极指南 【免费下载链接】bili2text Bilibili视频转文字,一步到位,输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 还在为B站视频内容整理而烦恼吗?想…...

Sunshine游戏串流服务器:从零部署到专家级调优的完整解决方案

Sunshine游戏串流服务器:从零部署到专家级调优的完整解决方案 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 想要打造完美的游戏串流体验,却总是被复杂的配…...

智慧树刷课插件:5分钟实现自动化学习,告别繁琐手动操作

智慧树刷课插件:5分钟实现自动化学习,告别繁琐手动操作 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台枯燥的视频播放流程而烦…...

深度解析TranslucentTB运行时依赖问题的创新解决方案

深度解析TranslucentTB运行时依赖问题的创新解决方案 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB TranslucentTB是一款广受欢迎的Wind…...

别急着升级Android Studio!手把手教你降级AGP 8.3.0-alpha01到8.1.3,解决版本不兼容报错

别急着升级Android Studio!手把手教你降级AGP 8.3.0-alpha01到8.1.3,解决版本不兼容报错 接手一个Kotlin项目时,最令人头疼的莫过于刚打开就遭遇版本不兼容的红色报错。尤其当错误提示显示"项目使用了不兼容的Android Gradle插件版本(A…...

告别手动肝船!碧蓝航线自动化脚本Alas终极使用指南

告别手动肝船!碧蓝航线自动化脚本Alas终极使用指南 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript 还在为碧蓝航…...

【职场】职场“贵人“的真相:他们从不随机出现,也从不无缘无故消失

职场"贵人"的真相:他们从不随机出现,也从不无缘无故消失每个在职场里走得还不错的人,回头看,都能说出一两个名字。 那个在你最迷茫的时候,把你带进了某个重要的圈子;那个在关键会议上&#xff0c…...

ROS2 Humble下colcon编译实战:从创建workspace到运行自定义节点

ROS2 Humble下colcon编译实战:从创建workspace到运行自定义节点 在机器人开发领域,ROS2已经成为事实上的标准框架,而colcon作为其官方推荐的构建工具,掌握它的使用技巧能显著提升开发效率。本文将带您完成一个完整的ROS2项目构建流…...

Halcon实战:告别调参玄学,用dyn_threshold和var_threshold搞定复杂光照下的缺陷检测

Halcon实战:告别调参玄学,用dyn_threshold和var_threshold搞定复杂光照下的缺陷检测 在工业视觉检测中,光照不均和背景纹理干扰是最令人头疼的问题之一。想象一下这样的场景:金属表面反光导致划痕时隐时现,印刷品上的油…...

千问 LeetCode 2478.完美分割的方案数 public int beautifulPartitions(String s, int k, int minLength)

好的,这是 LeetCode 2478 "完美分割的方案数" 的 Java 实现。 解题思路 核心是动态规划 + 前缀和优化: 1. 定义状态:dp[i][j] 表示前 i 个字符分成 j 段的方案数 2. 状态转移:对于每个可能的分割点,需要满足: - 当前段长度 ≥ minLength - 当前段首字…...

蓝莓智慧灌溉新突破!轻量化 YOLO 模型实现生长阶段实时精准检测

点击蓝字关注我们关注并星标从此不迷路计算机视觉研究院公众号ID|计算机视觉研究院学习群|扫码在主页获取加入方式https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber11395448计算机视觉研究院专栏Column of Computer Vision Institute本文针对蓝莓…...

5分钟掌握AMD处理器调优:新手也能轻松上手的硬件调试完整教程

5分钟掌握AMD处理器调优:新手也能轻松上手的硬件调试完整教程 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: htt…...

Dubbo学习笔记(快速入门)

一、分布式基础1.1 软件架构四大演变演变顺序:单体 → 垂直 → 分布式 → 微服务解释:架构进化本质:为了解决流量变大、代码变多、维护困难。1)单体架构所有模块一个工程,一个jar包,全部本地调用&#xff1…...

数据中心网络卡顿?可能是你的链路聚合负载分担策略没选对!

数据中心网络卡顿?深度解析链路聚合负载分担策略优化之道 当视频会议卡成PPT、网页加载转圈圈时,很多运维团队的第一反应是"带宽不够"。但在实际排查中,我们经常发现这样的场景:交换机之间的物理链路明明已经通过链路聚…...

终极微信聊天记录备份指南:免费开源工具WeChatExporter完整教程

终极微信聊天记录备份指南:免费开源工具WeChatExporter完整教程 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否担心珍贵的微信聊天记录会因手机损坏或…...

【C++笔记】内存管理流食般投喂

声明:以下知识相关资料来自比特官网和小编手搓~C/C内存管理1、C/C内存分布2、C语言中动态内存管理方式:malloc/calloc/realloc/free3、C内存管理方式3.1、new/delete操作内置类型3.2、new和delete操作自定义类型4、operator new 与 operator delete 函数…...

如何测量WIFI通讯中客户端的漫游时间

在工业WiFi通信中会有很多涉及漫游的场景,例如AGV车辆在整个车间内移动,车间范围内会布置多个AP来完成信号覆盖,AGV车辆运动过程中远离已连接AP,接近另一个AP时就会发生漫游,由于工业通讯协议对实时性要求很高&#xf…...

Display Driver Uninstaller:彻底解决显卡驱动问题的专业工具指南

Display Driver Uninstaller:彻底解决显卡驱动问题的专业工具指南 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-drivers-u…...

Perplexity谚语查询功能实测报告:7类典型误用场景+5步精准调优法,错过即降效40%

更多请点击: https://kaifayun.com 第一章:Perplexity谚语查询功能的核心价值与适用边界 Perplexity 的谚语查询功能并非通用语言模型的简单问答接口,而是一个面向文化语义深度解析的专用能力模块。它依托高质量结构化谚语知识图谱与上下文感…...

从零搭建Perplexity增强型新闻监控系统:Python+LangChain+自定义Fact-Check插件(含GitHub可运行代码仓链接)

更多请点击: https://intelliparadigm.com 第一章:Perplexity科技新闻搜索 Perplexity 是一款以实时性、可溯源和语义理解见长的AI驱动搜索工具,专为技术从业者与研究人员优化。其“科技新闻搜索”功能并非传统关键词匹配,而是基…...

直线模组选型别再“先选电机“了!导程才是起点(附正向推导五步法)

引言:一个高频"翻车"现场在直线模组(丝杆模组)选型中,有个环节经常出现逆向翻车——工程师先选好了电机,再去配丝杆导程,结果发现:❌ 速度上不去❌ 推力不够大❌ 电机严重发热问题的根…...

Perplexity生物检索黄金公式:[实体]+[关系]+[证据等级]+[时间窗]——经Nature子刊12篇方法论论文交叉验证

更多请点击: https://intelliparadigm.com 第一章:Perplexity生物检索黄金公式的提出与演进 Perplexity生物检索黄金公式(Perplexity-Bio Retrieval Golden Formula, PBRGF)并非源于单一论文,而是随着跨模态生物语义建…...

如何彻底解决Mac设备滚动方向冲突:Scroll Reverser终极配置指南

如何彻底解决Mac设备滚动方向冲突:Scroll Reverser终极配置指南 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 你是不是经常在Mac上同时使用触控板和鼠标&#xff0…...