首页 > 编程语言 >Java中用到的线程调度

Java中用到的线程调度

时间:2023-06-28 16:33:27浏览次数:55  
标签:时间 Java 用到 式调度 线程 优先级 执行 CPU

抢占式调度

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

协同式调度

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

JVM的线程调度实现(抢占式调度)

Java使用的线程调度使用抢占式调度,Java中线程会按优先级分配CPU时间片运行,且优先级越高越优先执行,但优先级高并不代表能独自占用执行时间片,可能是优先级高得到越多的执行时间片,反之,优先级低的分到的执行时间少但不会分配不到执行时间。

线程让出CPU的情况

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

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

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


标签:时间,Java,用到,式调度,线程,优先级,执行,CPU
From: https://blog.51cto.com/u_11315052/6573691

相关文章

  • Java 9 新特性
    Java9引入了许多新特性和改进,下面是一些Java9的新特性以及相关案例:模块化系统(JavaPlatformModuleSystem,JPMS):Java9引入了一个全新的模块化系统,允许开发者将代码组织成模块,以提高代码的可维护性和可重用性。模块化系统可以帮助开发者解决依赖......
  • Java 8 新特性
    Java8是Java编程语言的一个重要版本,引入了许多更新和改进。Lambda表达式:引入了函数式编程的概念,可以简化代码,提高代码的可读性和可维护性。1//使用Lambda表达式实现一个简单的线程2Threadthread=newThread(()->System.out.println("Hello,Lambda!"......
  • JavaScript-常用字符串方法和属性
    JavaScript-常用字符串方法和属性charAt()//返回指定位置处的字符。charCodeAt()//返回指定位置处字符编码。codePointAt()//返回字符串中索引(位置)处的Unicode值。concat()//返回两个或多个连接的字符串。constructor返回字符串的构造函数。endsWith()//返回......
  • 在 Java、Python、JavaScript 和 Go 中拥抱异步
    ​本文讨论了四种语言的异步,强调了它在创建高效、响应迅速的应用程序中的作用。作为一名拥有多年主要使用Java工作经验的软件开发人员,当我最近为一个新项目切换到Python时,我发现自己很感兴趣。这种转变促使我探索各种语言的异步编程世界,包括Java、Python、JavaScript和Go......
  • Java阻塞队列原理
    阻塞队列,关键字是阻塞,先理解阻塞的含义,在阻塞队列中,线程阻塞有这样的两种情况:1.当队列中没有数据的情况下,消费者端的所有线程都会被自动阻塞(挂起),直到有数据放入队列。2.当队列中填满数据的情况下,生产者端的所有线程都会自动阻塞(挂起),直到队列中有空的位置,线程被自动唤醒。阻塞队列的......
  • (Python编程)Jython:Java的Python
    ProgrammingPython,3rdEdition翻译最新版本见wiki:http://wiki.woodpecker.org.cn/moin/PP3eD欢迎参与翻译与修订。18.4.Jython:PythonforJava18.4.Jython:Java的PythonJython(formerlyknownasJPython)isanentirelydistinctimpleme......
  • web和java哪个就业更好?
    首先,要区分两种开发语言的特点:Java是一种后台的语言,类似于php,主要做的就是把数据库搭建好,以及数据放置到网页当中,java是比较复杂的编程语言。Web前端开发相对应的职位可能就是一些web前端开发工程师,主要工作是把ui设计师设计好的psd利用html,制作成网页,web前端工程师布局网站的结......
  • java陷阱之不可忽视的慢sql
    说明记录一下,以前处理方式,都是线上cpu告警运维查看数据库mysql提供给研发改。记录一下操作方式,我觉得应该研发定期去上线拿慢sql日志,再做更改,因为很多慢sql在低峰期并不会给数据库性能带来瓶颈但是高峰期来就会遇到高CPU阻塞业务,那个时候再去优化就会很着急  阿里云慢......
  • JAVA 草稿
    1.项目启动报错:Failedtostartbean'documentationPluginsBootstrapper'度娘解释:swagger的匹配模式进行调整导致,导致默认的匹配默认在springboot中不会使用,导致报错。处理方式:(不建议降低springboot版本,调整太大了)spring:mvc:pathmatch:matching-strategy......
  • java 解析csv
    opencsvjava读取csv的类库主要有两种,opencsv和javacsv,研究发现,javacsv最后一次更新是2014-12-10,很久不维护了。opencsv是apache的项目,并且至今仍在维护,所以决定使用opencsv。csvcsv文件,全名commaseparatedvalues,默认以逗号分隔,是纯文本文件。虽然用excel打开后格式排版了,但是那......