gpt4 book ai didi

java - 线程是如何在内存中执行的?

转载 作者:行者123 更新时间:2023-12-03 12:48:53 25 4
gpt4 key购买 nike

我正在学习 Java 中的Thread。我试图获取正在运行的线程。但是,我无法理解输出的顺序。

以下是我的代码

public class practice extends Thread {

public void run(){
for(int i=1;i<4;i++){

System.out.println(i);
System.out.println(Thread.currentThread().getName());
}

}

public static void main(String[] args) {

practice t1=new practice();
practice t2=new practice();
practice t3=new practice();

t1.start();
t2.start();
t3.start();
}

}

输出:

1
1
1
Thread-1
2
Thread-1
3
Thread-1
Thread-0
2
Thread-0
3
Thread-0
Thread-2
2
Thread-2
3
Thread-2

任何人都可以帮助我理解输出的顺序。提前致谢。

最佳答案

线程本质上是彼此并发。这意味着,两个(或多个)线程在同时执行时会竞争相同的资源 (CPU),并且 CPU 会以随机(不可预测)的顺序从执行一个线程切换到执行另一个线程。您无法也不会知道您的 CPU 和操作系统架构将决定跳转到哪个执行路径(线程)。此外,在某些语言中,这可能是操作系统架构的问题,在某些语言中,这可能只是CPU架构的问题,而在某些语言中,这可能是两者的问题。这取决于该语言的体系结构如何管理线程。

请注意,即使两个线程是并行 - 即它们在两个不同的内核上并行执行 - 您仍然无法预测哪个内核将首先执行指令。

由于上述几点,您每次运行代码时可能会得到不同的执行顺序。

关于java - 线程是如何在内存中执行的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62857956/

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