相同的java多线程程序在Eclipse和Netbeans中得到不同的输出



我在eclipse和Netbeans ide中得到了不同的多线程代码输出,我不知道它是怎么来的,这背后的逻辑是什么

和每次当我执行这段代码,它会显示不同的输出,请帮助我。

公共类MyThread2扩展线程
{

public void run()

{

`System.out.println("r1");`         ``   
    try    ``
    {    
        Thread.sleep(500);    
    }    
    catch(Exception e)    
    {    
    }    
    System.out.println("r2"); 

}    
public static void main(String args[])    
{    
    MyThread2 t1=new MyThread2();    
    MyThread2 t2=new MyThread2();    
    t1.start();    
    t2.start();    
    System.out.println(t1.isAlive());    
    System.out.println(t2.isAlive());    
}    
}    

Eclipse中的输出:
r1
r1
真正的
真正的
r2
r2

和Netbeans中的输出:
r1
真正的
真正的
r1
r2
r2

线程由JVM调度。JVM选择运行具有最高优先级的可运行线程。无论何时创建一个新的Java线程,它都具有与创建它的线程相同的优先级。所以,在您的情况下,两个线程具有相同的优先级!因此,JVM使用自己的算法(轮循调度)来挑选线程,并按顺序选择和执行它们。它没有一个固定的顺序,它是完全不可预测的评价执行!

在相同的IDE上运行不同的示例,它会给你不同的输出。即NetbeansEclipse。你可以试着两者都跑!它可能与之前运行的顺序不一致,因为这些是由JVM调度的。

线程由JVM调度,没有特定的顺序。这就是为什么对于涉及线程的相同代码,您会看到不同的输出。

JVM使用内部操作系统底层线程管理来管理线程,在几乎所有可用的操作系统中,线程调度的算法都是轮询的。

相关内容

  • 没有找到相关文章