gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:46:40 24 4
gpt4 key购买 nike

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

而且每次我执行这段代码时,它都会显示不同的输出,请帮助我。

公共(public)类 MyThread2 扩展了 Thread
{

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 选择运行具有最高优先级的 Runnable 线程。每当创建一个新的 Java 线程时,它与创建它的线程具有相同的优先级。所以,在你的情况下,两个线程具有相同的优先级!因此,JVM 使用自己的算法(Round Robin Scheduling)来选择线程并按顺序选择和执行它们。它没有固定的顺序,执行评级是完全不可预测的!

对于在同一 IDE(即 NetbeansEclipse 上运行的不同示例,它会提供不同的输出。您可以尝试同时运行两者!它可能与之前的运行顺序不一致,因为这些是由 JVM 安排的。

关于java - 我在 Eclipse 和 Netbeans 中得到相同 java 多线程程序的不同输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24319997/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com