gpt4 book ai didi

java - java中关于线程的查询

转载 作者:行者123 更新时间:2023-12-01 18:13:08 26 4
gpt4 key购买 nike

我正在阅读完整引用中的多线程,然后我对这段代码感到震惊,我无法理解这段代码的输出。有人可以帮助我吗这个?

class NewThread implements Runnable
{
Thread t;
NewThread()
{
t = new Thread(this, "Demo Thread");
System.out.println("Child thread: " + t);
t.start();
}
public void run()
{
try
{
for(int i = 5; i > 0; i--)
{
System.out.println("Child Thread: " + i);
Thread.sleep(500);
}
}
catch (InterruptedException e)
{
System.out.println("Child interrupted.");
}
System.out.println("Exiting child thread.");
}
}
class First
{
public static void main(String args[])
{
new NewThread();
try
{
for(int i = 5; i > 0; i--)
{
System.out.println("Main Thread: " + i);
Thread.sleep(1000);
}
}
catch (InterruptedException e)
{
System.out.println("Main thread interrupted.");
}
System.out.println("Main thread exiting.");
}
}

它产生输出:

Child thread: Thread[Demo Thread,5,main]

Main Thread: 5

Child Thread: 5

Child Thread: 4

Main Thread: 4

Child Thread: 3

Child Thread: 2

Main Thread: 3

Child Thread: 1

Exiting child thread

Main Thread: 2

Main Thread: 1

Main thread exiting

从 main() 方法中,调用 NewThread() 构造函数,然后创建一个名为“demo thread”的 Thread 类实例,并执行第一个 print() 语句。之后调用 start() 方法这个start方法是否不应该隐式调用run()方法,因此应该执行子循环,但是根据输出,控制进入主循环。控制如何进入main()循环,即使我们正在调用 t.start()?有人可以向我澄清代码输出吗?

最佳答案

一旦调用 start(),现在就有两个线程同时运行。 start() 立即返回,主循环继续(每 1000 毫秒循环一次)。但子循环现在也同时运行 - 每 500 毫秒一个循环。因此,在每个循环完成之前,将为每个主线打印两个子行。

关于java - java中关于线程的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31365732/

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