java - 为什么线程优先级不起作用?

标签 java multithreading thread-priority

public class Thread1 implements Runnable 
{

    @Override
    public void run() {

        System.out.println("Exiting1");
    }



public static void main(String[] args)
 {

System.out.println(Thread.currentThread().getPriority());   

Thread1 i=new Thread1();
Thread t=new Thread(i);
t.setPriority(8);
System.out.println(t.getPriority());
t.start();

System.out.println("Exiting");
    }
}

这里我有一个疑问,我将线程的优先级设置为高于 main() 线程,那么为什么 main() 中的 sopln() 首先执行。我的线程应该首先执行,因此它应该首先执行 run() 方法的 sopln(),然后执行 main() 方法的 sopln。

最佳答案

参见Oracle docs : Background Information: Java Threads

A JVM is free to implement priorities in any way it chooses, including ignoring the value.

我的重点。

尽管本文档专门针对 Solaris 实现,但它应该适用于所有 JVM。

关于java - 为什么线程优先级不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43759205/

相关文章:

c++ - 线程在 "in __lll_lock_wait"点卡住了几个线程

c# - 在 C# 中;从后台线程检查更改的最有效方法是什么?

java - 在 Java 中等待通知

java - JFrame 大小应减少桌面的最大可用大小

java - java中获取值最高的字符串(字符串具有相同的 'base'名称但后缀不同)

java - 无法设置 AndEngine

java - 如何使用 jsoup 输入 url 链接

c++ - 带有可移动、不可复制参数的 std::thread

c# - 如何确保特定的后台工作线程在另一个后台工作线程之前执行?

linux - 进程优先级与线程优先级