Java线程调度

线程调度指的是系统为线程分配CPU使用权的方式。主要有协同式线程调度抢占式线程调度

协同式线程调度(Cooperative Threads-Scheduling)

在多线程系统中,线程的执行时间由线程自身控制,执行结束后要主动通知系统切换到另一线程。

优劣势

  • 实现简单,由于线程执行结束后才会进行线程转换,切换操作对线程可见,所以不存在线程同步问题
  • 线程执行时间不可控,如果一个线程实现有问题,一直不通知系统进行线程切换,那整个系统就会阻塞

抢占式线程调度(Preemptive Threads-Scheduling)

在多线程系统中,每个线程由系统来分配执行时间,线程的切换不由线程本身控制(Java的Thread.yield()可以让出执行时间,但是无法主动获取执行时间)

优劣势

  • 线程的执行时间是可控的,不会由于一个线程导致整个进程阻塞,Java采用的是这种调度方式
  • 进程不能控制自身的执行,系统会进行时间片的切分,会涉及到上下文的保存,线程同步等问题,实现较复杂

JVM的实现:

JVM规范中规定每个线程都有优先级,且优先级越高越优先执行,但优先级高并不代表能独自占用执行时间片,可能是优先级高得到越多的执行时间片,反之,优先级低的分到的执行时间少但不会分配不到执行时间。

java使用的线程调度式抢占式调度

Java中线程会按优先级分配CPU时间片运行

线程让出cpu的情况:

  • 当前运行线程主动放弃CPU,JVM暂时放弃CPU操作,如调用yield()方法
  • 当前运行线程因为某些原因进入阻塞状态,例如阻塞在I/O上
  • 线程结束(Dead)

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

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

相关文章

#3551. [ONTAK2010]Peaks加强版(kruskal 重构树 + 主席树)

#3551. [ONTAK2010]Peaks加强版 我们要求从一个点出发经过困难值小于等于xxx的路径所能到达的山峰中第kkk高的是什么。 考虑按照边权升序,建议kruskalkruskalkruskal重构树,然后倍增向上跳,找到困难值小于等于xxx的深度最小的节点uuu&#…

ASP.NET Core 3.0 迁移避坑指南

一.前言.NET Core 3.0将会在 .NET Conf 大会上正式发布,截止今日发布了9个预览版,改动也是不少,由于没有持续关注,今天将前面开源的动态WebApi项目迁移到.NET Core 3.0还花了不少时间踩坑,给大家分享一下我在迁移过程中…

kruskal 重构树(讲解 + 例题)

kruskal重构树 如何建树 模仿kruskalkruskalkruskal,先将所有边排序。 依次遍历每一条边,如果这条边的两个节点(u,vu, vu,v)不在同一个连通块里面, 则新建一个nodenodenode节点,更新fa[u]fa[v]nodefa[u…

打不死我的,终将使我强大!DevOps黑客马拉松参赛心得

(IDCF DevOps黑客马拉松到底是个啥活动?)长得丑活得久、长得帅也惹人爱!大家好,我是刘威。隆正信息的业务架构师-花名逸云。非常荣幸可以参加在北京举办的第一届DevOps黑客马拉松比赛。黑客马拉松不是突然冒出来的&…

Java线程池面试题

1、什么是线程池 java.util.concurrent.Executors提供了一个 java.util.concurrent.Executor接口的实现用于创建线程池 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 假设一个服…

F. Cheap Robot(kruskal 重构树)

F. Cheap Robot 给定一个无向连通图,每条边有边权,路过需要消耗对应的电量(边权),有kkk个中心点, 问从a−>ba-> ba−>b,我们最少需要带多少电,设最小为CCC,当…

「标签管理」使用标签管理有道云笔记资料

因着大家对文件标签化比较高难道,需要熟悉一个标签工具软件,所以今天暂时来介绍个简单一些的网络资料的标签化管理,使用有道云笔记作为落地工具,同理在OneNote、印象笔记上原理类似。有道云笔记免费功能够用为了选择哪个笔记产品&…

JDK线程池实现

参见: https://www.cnblogs.com/trust-freedom/p/6594270.html http://ifeve.com/java-threadpool/ https://blog.csdn.net/u010963948/article/details/80573898 https://blog.csdn.net/moakun/article/details/80606029 https://www.cnblogs.com/liuzhihu/p/81773…

Problem G. Pandaria(线段树合并 + Kruskal 重构树)

Problem G. Pandaria 给定一个有nnn条边的无向连通图,每条边有对应的边权,每个点有一个颜色, 问从一个点出发,经过不超过www的边权,所能到达的点中,颜色出现次数做多且颜色编号最小的是什么颜色。 不超过…

我如何吸引Elastic创始人一起对高并发写入进行优化?

导语:在腾讯金融科技数据应用部的全民 BI 项目里,我们每天面对超过 10 亿级的数据写入,提高 ES 写入性能迫在眉睫,在最近的一次优化中,有幸参与到了 Elasticsearch 开源社区中。背景为了更便捷地分析数据,腾…

Java线程安全

Java 线程安全 什么是线程安全? 当多个线程访问某个类时,这个类始终都能表现出正确的行为,那么就称这个类是线程安全的。 一:基本概念 共享资源:能够被多个线程同时访问的资源竞态条件:当两个线程竞争统…

P4899 [IOI2018] werewolf 狼人(kruskal 重构树 + 主席树)

P4899 [IOI2018] werewolf 狼人 给定一个有nnn个点mmm条边的无向图,有QQQ个询问 每次输入S,E,L,RS, E, L, RS,E,L,R,表示你在SSS点出发,要到EEE点,且初始时你是人形态,你只能走[L,n][L, n][L,n]的点, 但…

微软+开源,那些亲爱的以及热爱的

微软 Reactor 社区空间开幕式暨 Azure Meetup 社区活动已于9月7日在上海圆满结束!但是…如何构建一个可持续发展的社区未来的路,仍然很长...你应该知道的微软 Reactor微软 Reactor 是微软为构建开发者社区而提供的一个社区空间,以“予力多元…

Java线程问题问答

1、多线程的作用? 发挥多核CPU的优势,提高效率防止阻塞便于建模:将一个任务拆分成多个子任务,分别建立程序模型 2:平时项目中使用锁和synchronized比较多,而很少使用volatile,难道就没有保证可见…

ASP.NET Core 2.2 项目升级至 3.0 备忘录

.NET Core 3.0及ASP.NET Core 3.0 前瞻ASP.NET Core 3.0 迁移避坑指南将 ASP.NET Core 2.2 迁移至 ASP.NET Core 3.0 需要注意的地方记录在这篇随笔中。TargetFramework 改为 netcoreapp3.0 <TargetFramework>netcoreapp3.0</TargetFramework>从 Web 项目&#xff…

Java 死锁

目录&#xff1a; 什么是死锁&#xff1f;死锁是怎么产生的&#xff1f;怎么排查死锁&#xff1f;死锁的预防拓展&#xff1a;Java CPU 100%排查 一 什么是死锁&#xff1f; 注&#xff1a;线程和进程都可能会产生死锁&#xff0c;以下以线程为例 死锁是指两个或两个以上的…

CF196E Opening Portals

CF196E Opening Portals 给定一个有nnn个节点&#xff0c;mmm条边的无向联通图&#xff0c;有kkk个点有portalsportalsportals&#xff0c;当经过了某个点&#xff0c;如果这个点有portalportalportal&#xff0c;它就会永久开启&#xff0c; 对于任意两个开启的portalportal…

.NET Core 微信小程序退款——(统一退款)

点击上方“dotNET名人堂”&#xff0c;选择“设为星标”用学习的姿态&#xff0c;步入工作的状态继上一篇".NET Core 微信小程序支付——&#xff08;统一下单&#xff09;后"&#xff0c;本文将实现统一退款功能&#xff0c;能支付就应该能退款嘛&#xff0c;一般涉…

Java 锁之 CAS

什么是CAS(compare and swap)&#xff1f; CAS&#xff08;Compare & Set&#xff0c;或是 Compare & Swap&#xff09;&#xff0c;即比较并交换&#xff0c;也是实现我们平时所说的自旋锁或乐观锁的核心操作。 它的实现很简单&#xff0c;就是用一个预期的值和内存…

牛客练习赛71 F 红蓝图(kruskal重构树)

红蓝图 给定两个参数x,tx, tx,t&#xff0c;删除边权大于ttt的红边&#xff0c;和边权小于ttt的蓝边&#xff0c;问对于所有的点yyy&#xff0c;既能通过红边走向xxx&#xff0c;又能通过蓝边走向xxx&#xff0c;的点有多少个。 考虑对红边按照边权升序建立一颗kruskalkruska…