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

Java 为什么线程优先级不起作用?,java,multithreading,thread-priority,Java,Multithreading,Thread Priority,在这里,我有一个疑问,我已经设置了我的线程优先级高于主线程,那么为什么主线程中的sopln是首先执行的。我的线程应该先执行,所以它应该先执行run方法的sopln,然后再执行main方法的sopln。请参阅 JVM可以选择任何方式实现优先级,包括忽略值 我的重点 尽管本文档专门介绍Solaris实现,但它应适用于所有JVM。sopln?什么sopln?提示:这是一个反问。@MikeNakis sopln->System.out.println提示:您希望我们花时间来帮助您,因此适当地格式化/缩进

在这里,我有一个疑问,我已经设置了我的线程优先级高于主线程,那么为什么主线程中的sopln是首先执行的。我的线程应该先执行,所以它应该先执行run方法的sopln,然后再执行main方法的sopln。

请参阅

JVM可以选择任何方式实现优先级,包括忽略值

我的重点


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

sopln?什么sopln?提示:这是一个反问。@MikeNakis sopln->System.out.println提示:您希望我们花时间来帮助您,因此适当地格式化/缩进所有源代码输入;而不是把这里弄得一团糟。除此之外,下次尝试使用你最喜欢的搜索引擎。这确实是一个经常出现的问题。虽然这是一个重复的问题,但这是一个简洁准确的答案。但是如果JVM可以自由地以任何方式实现优先级,包括忽略值。那么线程优先级有什么用呢?@Ankit它是Java的一个古老特性。如果您需要确保多线程的某种形式的排序,那么还有许多其他技术。如果他们需要交换信息,那么阻塞队列是有用的。如果你想要的只是一个锁步时刻,那么试试倒计时闩锁。
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");
    }
}