gpt4 book ai didi

Java:线程不起作用

转载 作者:行者123 更新时间:2023-11-29 09:43:43 25 4
gpt4 key购买 nike

我正在尝试在 for 循环中启动一个线程。这个任务应该只等待一秒钟 (Thread.sleep()),所以每次循环重新开始时,都会启动一个新线程,它应该导致线程后面的代码等待直到它被执行。

public void count()
{
for(int i = 29; i>=0; i--)
{
Thread t1;
t1 = new Thread(new TimerClass());
t1.start();
String s = String.valueOf(i);
jLabel6.setText(s);
System.out.println(s);
}
}


public class TimerClass implements Runnable{

@Override
public void run()
{
try{
Thread.sleep(1000);
System.out.println("Timer");
} catch(InterruptedException e)
{
}
}
}

如您所见,我在两种方法中都实现了 System.out.println() 以检查它们是否实际执行。我明白了:

29
28
27
26
...//25 - 3
2
1
0
Timer
Timer
Timer
//in all 29 times Timer

所以应该是 29, Timer, 28, Timer 等等,但不是。有谁知道代码有什么问题?非常感谢。

最佳答案

启动线程的主循环可能会控制 CPU,因此它会完成整个循环,然后线程才有机会继续。

事实上,考虑到您的所有线程都 hibernate 了整整一秒并且您只循环了 29 次,您可以保证您的循环将在您的线程完成之前完成(并打印所有数字)。如果您希望线程打印,请在主循环中添加 sleep - 请记住,主循环不会在您启动线程时停止。

关于Java:线程不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23828946/

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