网站开发程序制作域名备案公众号外链网站怎么做

pingmian/2026/1/25 15:27:16/文章来源:
网站开发程序制作域名备案,公众号外链网站怎么做,wordpress 摘要省略号,jinsom wordpress点击上方“占小狼的博客”#xff0c;选择“设为星标“本文阅读时间大约4分钟。来源#xff1a;https://dwz.cn/dLRLBZabJava虚拟机层面所暴露给我们的状态#xff0c;与操作系统底层的线程状态是两个不同层面的事。具体而言#xff0c;这里说的 Java 线程状态均来自于 Thr… 点击上方“占小狼的博客”选择“设为星标“本文阅读时间大约4分钟。来源https://dwz.cn/dLRLBZabJava虚拟机层面所暴露给我们的状态与操作系统底层的线程状态是两个不同层面的事。具体而言这里说的 Java 线程状态均来自于 Thread 类下的 State 这一内部枚举类中所定义的状态什么是 RUNNABLE直接看它的 Javadoc 中的说明一个在 JVM 中执行的线程处于这一状态中。(A thread executing in the Java virtual machine is in this state.)而传统的进(线)程状态一般划分如下注这里的进程指早期的单线程进程这里所谓进程状态实质就是线程状态。那么 runnable 与图中的 ready 与 running 区别在哪呢与传统的ready状态的区别更具体点javadoc 中是这样说的处于 runnable 状态下的线程正在 Java 虚拟机中执行但它可能正在等待来自于操作系统的其它资源比如处理器。A thread in the runnable state is executing in the Java virtual machine but it may be waiting for other resources from the operating system such as processor.显然runnable 状态实质上是包括了 ready 状态的。甚至还可能有包括上图中的 waiting 状态的部分细分状态在后面我们将会看到这一点。与传统的running状态的区别有人常觉得 Java 线程状态中还少了个 running 状态这其实是把两个不同层面的状态混淆了。对 Java 线程状态而言不存在所谓的running 状态它的 runnable 状态包含了 running 状态。我们可能会问为何 JVM 中没有去区分这两种状态呢现在的时分(time-sharing)多任务(multi-task)操作系统架构通常都是用所谓的“时间分片(time quantum or time slice)”方式进行抢占式(preemptive)轮转调度(round-robin式)。更复杂的可能还会加入优先级(priority)的机制。这个时间分片通常是很小的一个线程一次最多只能在 cpu 上运行比如10-20ms 的时间(此时处于 running 状态)也即大概只有0.01秒这一量级时间片用后就要被切换下来放入调度队列的末尾等待再次调度。(也即回到 ready 状态)注如果期间进行了 I/O 的操作还会导致提前释放时间分片并进入等待队列。又或者是时间分片没有用完就被抢占这时也是回到 ready 状态。这一切换的过程称为线程的上下文切换(context switch)当然 cpu 不是简单地把线程踢开就完了还需要把被相应的执行状态保存到内存中以便后续的恢复执行。显然10-20ms 对人而言是很快的不计切换开销(每次在1ms 以内)相当于1秒内有50-100次切换。事实上时间片经常没用完线程就因为各种原因被中断实际发生的切换次数还会更多。也这正是单核 *CPU 上实现所谓的“并发*(concurrent)”的基本原理但其实是快速切换所带来的假象这有点类似一个手脚非常快的杂耍演员可以让好多个球同时在空中运转那般。时间分片也是可配置的如果不追求在多个线程间很快的响应也可以把这个时间配置得大一点以减少切换带来的开销。如果是多核CPU才有可能实现真正意义上的并发这种情况通常也叫并行(pararell)不过你可能也会看到这两词会被混着用这里就不去纠结它们的区别了。通常Java的线程状态是服务于监控的如果线程切换得是如此之快那么区分 ready 与 running 就没什么太大意义了。当你看到监控上显示是 running 时对应的线程可能早就被切换下去了甚至又再次地切换了上来也许你只能看到 ready 与 running 两个状态在快速地闪烁。当然对于精确的性能评估而言获得准确的 running 时间是有必要的。现今主流的 JVM 实现都把 Java 线程一一映射到操作系统底层的线程上把调度委托给了操作系统我们在虚拟机层面看到的状态实质是对底层状态的映射及包装。JVM 本身没有做什么实质的调度把底层的 ready 及 running 状态映射上来也没多大意义因此统一成为runnable 状态是不错的选择。我们将看到Java 线程状态的改变通常只与自身显式引入的机制有关。当I/O阻塞时我们知道传统的I/O都是阻塞式(blocked)的原因是I/O操作比起cpu来实在是太慢了可能差到好几个数量级都说不定。如果让 cpu 去等I/O 的操作很可能时间片都用完了I/O 操作还没完成呢不管怎样它会导致 cpu 的利用率极低。所以解决办法就是一旦线程中执行到 I/O 有关的代码相应线程立马被切走然后调度 ready 队列中另一个线程来运行。这时执行了 I/O 的线程就不再运行即所谓的被阻塞了。它也不会被放到调度队列中去因为很可能再次调度到它时I/O 可能仍没有完成。线程会被放到所谓的等待队列中处于上图中的 waiting 状态当然了我们所谓阻塞只是指这段时间 cpu 暂时不会理它了但另一个部件比如硬盘则在努力地为它服务。cpu 与硬盘间是并发的。如果把线程视作为一个 job这一 job 由 cpu 与硬盘交替协作完成当在 cpu 上是 waiting 时在硬盘上却处于 running只是我们在操作系统层面讨论线程状态时通常是围绕着 cpu 这一中心去述说的。而当 I/O 完成时则用一种叫中断(interrupt)的机制来通知 cpu也即所谓的“中断驱动(interrupt-driven)”现代操作系统基本都采用这一机制。某种意义上这也是控制反转(IoC)机制的一种体现cpu不用反复去询问硬盘这也是所谓的“好莱坞原则”—Don’t call us, we will call you.好莱坞的经纪人经常对演员们说“别打电话给我(有戏时)我们会打电话给你。”在这里硬盘与 cpu 的互动机制也是类似硬盘对 cpu 说”别老来问我 IO 做完了没有完了我自然会通知你的“当然了cpu 还是要不断地检查中断就好比演员们也要时刻注意接听电话不过这总好过不断主动去询问毕竟绝大多数的询问都将是徒劳的。cpu 会收到一个比如说来自硬盘的中断信号并进入中断处理例程手头正在执行的线程因此被打断回到 ready 队列。而先前因 I/O 而waiting 的线程随着 I/O 的完成也再次回到 ready 队列这时 cpu 可能会选择它来执行。另一方面所谓的时间分片轮转本质上也是由一个定时器定时中断来驱动的可以使线程从 running 回到 ready 状态比如设置一个10ms 的倒计时时间一到就发一个中断好像大限已到一样然后重置倒计时如此循环。与 cpu 正打得火热的线程可能不情愿听到这一中断信号因为它意味着这一次与 cpu 缠绵的时间又要到头了......奴为出来难何日君再来现在我们再看一下 Java 中定义的线程状态嘿它也有 BLOCKED(阻塞)也有 WAITING(等待)甚至它还更细还有TIMED_WAITING现在问题来了进行阻塞式 I/O 操作时Java 的线程状态究竟是什么是 BLOCKED还是 WAITING可能你已经猜到既然放到 RUNNABLE 这一主题下讨论其实状态还是 RUNNABLE。我们也可以通过一些测试来验证这一点Testpublic void testInBlockedIOState() throws InterruptedException { Scanner in new Scanner(System.in); // 创建一个名为“输入输出”的线程t Thread t new Thread(new Runnable() { Override public void run() { try { // 命令行中的阻塞读 String input in.nextLine(); System.out.println(input); } catch (Exception e) { e.printStackTrace(); } finally { IOUtils.closeQuietly(in); } } }, 输入输出); // 线程的名字 // 启动 t.start(); // 确保run已经得到执行 Thread.sleep(100); // 状态为RUNNABLE assertThat(t.getState()).isEqualTo(Thread.State.RUNNABLE);}在最后的语句上加一断点监控上也反映了这一点网络阻塞时同理比如socket.accept我们说这是一个“阻塞式(blocked)”式方法但线程状态还是 RUNNABLE。Testpublic void testBlockedSocketState() throws Exception { Thread serverThread new Thread(new Runnable() { Override public void run() { ServerSocket serverSocket null; try { serverSocket new ServerSocket(10086); while (true) { // 阻塞的accept方法 Socket socket serverSocket.accept(); // TODO } } catch (IOException e) { e.printStackTrace(); } finally { try { serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } } } }, socket线程); // 线程的名字 serverThread.start(); // 确保run已经得到执行 Thread.sleep(500); // 状态为RUNNABLE assertThat(serverThread.getState()).isEqualTo(Thread.State.RUNNABLE);}监控显示当然Java 很早就引入了所谓 nio(新的IO)包至于用 nio 时线程状态究竟是怎样的这里就不再一一具体去分析了。至少我们看到了进行传统上的 IO 操作时口语上我们也会说“阻塞”但这个“阻塞”与线程的 BLOCKED 状态是两码事如何看待RUNNABLE状态首先还是前面说的注意分清两个层面虚拟机是骑在你操作系统上面的身下的操作系统是作为某种资源为满足虚拟机的需求而存在的当进行阻塞式的 IO 操作时或许底层的操作系统线程确实处在阻塞状态但我们关心的是 JVM 的线程状态。JVM 并不关心底层的实现细节什么时间分片也好什么 IO 时就要切换也好它并不关心。前面说到“处于 runnable 状态下的线程正在* Java 虚拟机中执行但它可能正在等待*来自于操作系统的其它资源比如处理器。”JVM 把那些都视作资源cpu 也好硬盘网卡也罢有东西在为线程服务它就认为线程在“执行”。你用嘴用手还是用什么鸟东西来满足它的需求它并不关心~处于 IO 阻塞只是说 cpu 不执行线程了但网卡可能还在监听呀虽然可能暂时没有收到数据就好比前台或保安坐在他们的位置上可能没有接待什么人但你能说他们没在工作吗所以 JVM 认为线程还在执行。而操作系统的线程状态是围绕着 cpu 这一核心去述说的这与 JVM 的侧重点是有所不同的。前面我们也强调了“Java 线程状态的改变通常只与自身显式引入的机制有关”如果 JVM 中的线程状态发生改变了通常是自身机制引发的。比如 synchronize 机制有可能让线程进入BLOCKED 状态sleepwait等方法则可能让其进入 WATING 之类的状态。它与传统的线程状态的对应可以如下来看RUNNABLE 状态对应了传统的 ready running 以及部分的 waiting 状态。近期热文 整理了一些 IDEA 中比较骚的技巧7年Java后端被淘汰一路北漂辛酸史Java8 的这个特性用起来真的很爽最后分享一份面试宝典《Java核心知识点整理.pdf》覆盖了JVM、锁、高并发、反射、Spring原理、微服务、Zookeeper、数据库、数据结构等等。获取方式点“在看”关注公众号并回复 666 领取更多内容陆续奉上。明天见(ω)♡

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/85802.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

绍兴网站网站建设做网站买服务器

一 、伪类(不存在的类,特殊的类) -伪类用来描述一个元素的特殊状态 比如:第一个元素,被点击的元素,鼠标移入的元素 -特点:一般请情况下,使用:开头 1、 :first-child …

株洲建设网站制作深圳市住房和建设局官网站首页

Mysql之聚合函数 什么是聚合函数常见的聚合函数GROUP BYWITH ROLLUPHAVINGHAVING与WHERE的对比 总结SQL底层原理 什么是聚合函数 对一组数据进行汇总的函数,但是还是返回一个结果 聚合函数也叫聚集,分组函数 常见的聚合函数 1.AVG(): 求平均值 2.SUM() :…

重庆电力建设公司网站网站建设推广文案

工服穿戴检测联动门禁开关算法通过yolov8深度学习框架模型,工服穿戴检测联动门禁开关算法能够准确识别和检测作业人员是否按照规定进行工服着装,只有当人员合规着装时,算法会发送开关量信号给门禁设备,使门禁自动打开。YOLO的结构…

肇庆有哪家做企业网站的注册城乡规划师好考吗

Hadoop的介绍Hadoop最早起源于Nutch.Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题——如何解决数十亿网页的存储和索引问题. 2003年、2004年谷歌发表的两…

公司网站 设计北京公司注册地址政策

mytomcat项目简介自己实现的简易的TomcatTomca实现说明Tomcat,这只3脚猫,大学的时候就认识了,直到现在工作中,也常会和它打交道。这是一只神奇的猫,我们可以通过实现它来深刻了;了解它的实现原理。考虑自己…

安阳空气做优化网站是什么意思

1、beforeRouteEnter 进入页面 to – 即将要跳转到的页面 form – 跳转前的页面,从哪个页面跳转过来的 next – 下一步,若无指定跳转的路由,设置为空 next() 即可 beforeRouteEnter(to, from, next) {next() }, 使用 beforeRouteEnter 时&…

网站设计培训班老师免费html网站开发教程

相信很多考生在阅读高校招生简章的时候,在录取规则那里都会看到专业级差这么一个词,很多同学和家长就不明白了,这个专业级差到底是什么意思呢?该怎么去理解这个专业级差呢?下面新亚艺考培训学校就带着大家一起了解什么…

阿里云服务器做盗版视频网站吗网站会员系统怎么做

IDEA启动失败报错解决思路 背景:在IDEA里安装插件失败,重启后直接进不去了,然后分析问题解决问题的过程记录下来。方便下次遇到快速解决。也是一种解决问题的思路,分享出去。 启动报错信息 Internal error. Please refer to https…

响应式网站建设哪里有跨境电商软件下载

1. 结构体: 1. 结构体类型定义: 嵌入式学习第十三天!(const指针、函数指针和指针函数、构造数据类型)-CSDN博客 2. 结构体变量的定义: 嵌入式学习第十三天!(const指针、函数指针和…

单位网站建设情况调查情况品牌推广文案

一、效果: 如下图所示,进入该页面后,默认选中第一个分类,以及第一个分类下的列表数据。 二、代码实现: 关键代码: 进入页面时,默认调用分类的接口,在分类接口里做判断&#xff…

建设网站赚的是什么钱一个门户网站需要多大的空间

来源: 大数据实验室“是说芯语”已陪伴您439天现在微电子集成电路技术对世界的各种科技电子产品越来越应用广泛了,一个国家的发展越来越离不开高端芯片了,一个国家越是发展得越快对高端芯片需求量越大,比如我国的芯片需求占世界的50&#xff…

建设企业网站官网下载dede网站维护暂时关闭

上期小编给大家汇总介绍了mysql的6个基础的知识点,下面继续给大家分享一下另外7个知识点:7、什么是死锁?怎么解决?死锁:两个或多个事务相互占用了对方的锁,就会一直处于等待的状态。常见的解决死锁的方法:(…

网站建设 设备网站建设犭金手指a15

目录 这个社会的规则或者真相,跟人情一毛钱关系都没有 心平能愈三千疾(无欲无求是完人) 永远不要做羞耻心太重的人(丢人是成长最快的方式) 好脾气留给最亲的人 这个社会的规则或者真相,跟人情一毛钱关系…

h5商城网站怎么建立无锡做网站的公司电话

1. 题目 给定一个字符串,请将字符串里的字符按照出现的频率降序排列。 输入: "tree"输出: "eert"2. 优先队列解题 先用map统计字符出现次数再将字符何其次数插入优先队列出队 struct cmp { //写在类内也可以,写在函数里也行bool…

医疗网站的运营wordpress tag标签

题目链接:leetcode使用最小花费爬楼梯 目录 题目解析: 算法原理 1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 5.返回值 编写代码 题目解析: 题目让我们求达到楼梯顶部的最低花费. 由题可得: cost[i] 是从楼梯第 i 个…

免费注册账号qqseo百度贴吧

华为根据数据特性及治理方法的不同对数据进行了分类定义:内部数据和外部数据、结构化数据和非结构化数据、元数据。其中,结构化数据又进一步划分为基础数据、主数据、事务数据、报告数据、观测数据和规则数据。 对上述数据分类的定义及特征描述。 分类维…

专门做折扣的网站建立公司网站需要多少钱

♥ 为方便您进行讨论和分享,同时也为能带给您不一样的参与感。请您在阅读本文之前,点击一下“关注”,非常感谢您的支持! 文|猴哥聊娱乐 编辑|侯欢庭 七年前,一个年仅三岁的小女孩以其无邪的表情包风靡网络&#xff0…

欢迎访问语文建设杂志网站seo搜索引擎优化方案

来源:新华社美国哈勃太空望远镜的新观测成果进一步确认了宇宙在加速膨胀,现在的膨胀速度比根据早期宇宙特征预测的膨胀速度快大约9%。此次研究成果25日发表在美国《天体物理学杂志》上。研究人员利用新方法对大麦哲伦星云的70颗造父变星进行了观测。有“…

做旅游网站的公司太原心诺做网站

1.首先,我们回顾下FSO是什么?文件系统对象FSO的英文全称是File System Object ,这种对象模型提出了有别于传统的文件操作语句处理文件和文件夹的方法。通过采用object.method这种在面向对象编程中广泛使用的语法,将一系列操作文件…

简单网站建设哪家便宜网络服务提供者发现用户利用其网络

正题 题目大意 mmm个盒子&#xff0c; 当第iii个盒子中放了xxx&#xff0c;那么i1i1i1个盒子中就必须放2x2x2x&#xff08;i<mi<mi<m&#xff09;。 求1∼n1\sim n1∼n&#xff0c;mmm个盒子&#xff0c;求第一个盒子中可以放多少个 解题思路 1号盒子中的肯定越小越好…