调度线程时的JVM公平性

亚当·科特瓦辛斯基

在调度线程执行时,是否有关于JVM有多公平的假设?

对于下面的代码段,是否可以只执行“代码A”,而忽略B?

public static void main(String args[]) {

    new Thread() {
      public void run() {
        for (;;) { /* code A */ }
      }
    }.start();

    new Thread() {
      public void run() {
        for (;;) { /* code B */ }
      }
    }.start();

}

问题更多是理论上的问题-让我们假设没有任何一个线程被阻塞或以其他方式鼓励调度程序切换上下文。

斯蒂芬·C

在调度线程执行时,是否有关于JVM有多公平的假设?

不。

对于下面的代码段,是否可以只执行“代码A”,而忽略B?

理论上是。

在实践中:

  • 如果有一个(可用的)内核,我希望操作系统级别的线程调度程序对线程进行时间切片,以使它们在对数条件下各自获得大约50%的可用时间

  • 如果有多个(可用)内核,我希望两个线程可以并行运行。


请注意,JLS或JVM规范均未提及有关线程调度或公平性的任何内容。的javadoc也没有Thread

据我所知,唯一提及公平性的Java API是ReentrantLockAPI(javadoc),其中有一个用于使用公平性策略创建锁的构造函数参数。这意味着调度程序偏向于一直等待锁定时间最长的线程。但是,即使这是被警告的:

“但是请注意,锁的公平性不能保证线程调度的公平性。”

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

调度线程时的JVM公平性

来自分类Dev

执行器服务公平性

来自分类Dev

ThreadPoolTaskExecutor bean中的同步队列公平性策略?

来自分类Dev

游戏服务器TCP网络套接字-公平性

来自分类Dev

JVM线程管理与OS调度

来自分类Dev

当线程实际执行时,POSIX线程与内核的完全公平调度程序的调度策略

来自分类Dev

如何启用公平调度程序?

来自分类Dev

如何启用公平调度程序?

来自分类Dev

后台线程调度操作时,Rx TestScheduler引发NullReference异常

来自分类Dev

使用调度组时如何使公共资源线程安全?

来自分类Dev

后台线程调度操作时,Rx TestScheduler引发NullReference异常

来自分类Dev

线程终止时jvm是否释放线程的堆栈

来自分类Dev

线程终止时,jvm是否释放线程的堆栈

来自分类Dev

YARN中的公平调度程序的ACL不起作用

来自分类Dev

事件调度线程同步

来自分类Dev

线程和任务调度

来自分类Dev

了解线程调度模式

来自分类Dev

使用反应性扩展(Rx)调度程序时创建STA线程

来自分类Dev

调度程序会调度内核线程吗?

来自分类Dev

公平调度程序和容量调度程序有什么区别?

来自分类Dev

覆盖AWT事件调度线程

来自分类Dev

Cuda线程调度-延迟隐藏

来自分类Dev

Android服务的线程调度问题

来自分类Dev

将逻辑线程与事件调度线程分开

来自分类Dev

如何在多线程中为用户提供公平

来自分类Dev

使用foreach遍历ArrayList时的线程安全性

来自分类Dev

不带锁读取bool属性时的线程安全性

来自分类Dev

JVM如何确保新对象的内存分配的线程安全性

来自分类Dev

如何在春季amqp中设置basicQos以进行公平调度?