两种线程的调度模式:

抢占式调度:

抢占式调度指的是每条线程执行的时间、线程的切换都由系统控制,系统控制指的是在系统某种运行机制下,可能每条线程都分同样的执行时间片,也可能是某些线程执行的时间片较长,甚至某些线程得不到执行的时间片。在这种机制下,一个线程的堵塞不会导致整个进程堵塞。

协同式调度:

协同式调度指某一线程执行完后主动通知系统切换到另一线程上执行,这种模式就像接力赛一样,一个人跑完自己的路程就把接力棒交接给下一个人,下个人继续往下跑。线程的执行时间由线程本身控制,线程切换可以预知,不存在多线程同步问题,但它有一个致命弱点:如果一个线程编写有问题,运行到一半就一直堵塞,那么可能导致整个系统崩溃。

JVM的实现:

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

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

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

线程让出cpu的情况:

当前运行线程主动放弃CPU,JVM暂时放弃CPU操作(基于时间片轮转调度的JVM操作系统不会让线程永久放弃CPU,或者说放弃本次时间片的执行权),例如调用yield()方法。

当前运行线程因为某些原因进入阻塞状态,例如阻塞在I/O上。

当前运行线程结束,即运行完run()方法里面的任务。

多线程跑调度_java多线程中的调度策略相关推荐

  1. java 多线程跑数据_java——多线程的实现方式、三种办法解决线程赛跑、多线程数据同步(synchronized)、死锁...

    多线程的实现方式:demo1.demo2 demo1:继承Thread类,重写run()方法 packagethread_test;public class ThreadDemo1 extendsTh ...

  2. java多线程 cpu分配_java多线程总结(转载)

    Java 多线程编程总结 --------------------------------------------------------------------------------------- ...

  3. java 多线程 返回值_JAVA多线程实现和应用总结:如何使用有返回值的多线程

    最近在做代码优化时学习和研究了下JAVA多线程的使用,看了菜鸟们的见解后做了下总结. 1.JAVA多线程实现方式 JAVA多线程实现方式主要有三种:继承Thread类.实现Runnable接口.使用E ...

  4. java多线程 修改优先级_Java多线程-线程的调度(优先级)

    与线程休眠类似,线程的优先级仍然无法保障线程的执行次序.只不过,优先级高的线程获取CPU资源的概率较大,优先级低的并非没机会执行. 线程的优先级用1-10之间的整数表示,数值越大优先级越高,默认的优先 ...

  5. java 多线程bean 注入_java多线程中注入Spring对象问题

    信息加密之Base64 Base64是一种最简单的简单的加密形式,经常被使用,记录一下,以便日后可以深入了解. jdk格式: //获得密钥Base64Encoder encoder = new Bas ...

  6. java多线程工具类_Java多线程系列之:线程的并发工具类

    一,Fork-Join 1,定义: Fork-Join框架:就是在必要的情况下,将一个大任务,进行拆分(fork)成若干个小任务(拆到不能再拆时),再将一个个的小任务运算的结果进行join汇总. 2, ...

  7. java main是多线程的吗_Java多线程之线程及其常用方法

    创建线程和常用方法 进程与线程的概念进程 进程是程序执行时的一个实例.程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配CPU时间,程序开 ...

  8. java 多线程并发 问题_JAVA多线程和并发基础面试问答

    原文链接 译文连接作者:Pankaj  译者:郑旭东  校对:方腾飞 多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一.在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌 ...

  9. java多线程传值覆盖_Java 多线程传值的四种方法

    其实大家都知道多线程传值有三种方式: 1:通过构造方法传递数据 2:通过变量和方法传递数据 3:通过回调函数传递数据 那么博主有个非常变态的需求,所以找出了第四种实现方式,先看效果图: 动态Cron4 ...

最新文章

  1. 手把手带你入门Java中File类
  2. 【FTP】FTP服务器的搭建
  3. python-上传文件的几种方式
  4. html如何制作滑块,网页制作html5实现滑块功能之type=quot;rangequot;属性-建站-建站教程-建站方法-米云建站 - 米云问答...
  5. 【Java】利用for循环打印心型
  6. 使用VScode + PicGo 写markdown 以及github图片加载不出的问题
  7. 有多少人乘坐公交车时用NFC付钱?
  8. 圣斗士星矢服务器维护时间,圣斗士星矢正义传说开服时间表 什么时候开新服...
  9. PyQt5和Python的多线程
  10. [转载] Python: ljust()|rjust()|center()字符串对齐
  11. [机器学习][三维重建] 凸包算法——Graham扫描
  12. 微商爆粉2.0全自动批量加人模拟手动操作
  13. 电脑重装系统后,重启时遇到错误,报错需要重新启动,并重新安装系统
  14. HttpWatch(功能详细介绍)
  15. 与蜂窝连接的无人机的空地干扰缓解
  16. 中国人的智商全球最高
  17. ISCC2022wp
  18. 避免计算机更新,macOS更新关闭技巧,避免Mac电脑会一直跳出更新提示
  19. 【KATA练习日记】关于std::accumulate的使用
  20. QT中QDatetime中文系统中获取英文系统的结果

热门文章

  1. 《播客》项目总结——web标准页面设计方面(转)
  2. hdu 1002 A+B problem II
  3. layui表格——table.render(options)(转)
  4. angularJS限制 input-text 只能输入数字
  5. CozyRSS2开发记录0-win10开坑
  6. mybatis之xml中日期时间段查询的sql语句
  7. getElementByID() getElementsByName() getElementsByTagName()的区别 .
  8. 支持drupal的空间
  9. 运用Unity实现AOP拦截器[结合异常记录实例]
  10. 内容推荐策略产品经理的方法和实践