gpt4 book ai didi

Java: mytextarea.setText ("hello") + Thread.sleep(1000) = 奇怪的结果

转载 作者:行者123 更新时间:2023-12-02 05:12:50 26 4
gpt4 key购买 nike

我有这样的东西:

for(int i=0; i<5; i++){
mytextarea.setText("hello " + i);
try{
Thread.currentThread().sleep(1000); //to give time for users to read
} catch(Exception e){}
}

我期望它会在文本区域显示“hello 0”,等待1秒,然后显示“hello 1”,然后等待1秒,等等。

但是发生的情况不同,它等待 5 秒,然后显示“hello 4”。

有什么想法吗?

最佳答案

是的 - 你基本上阻塞了 UI 线程,所以它永远不会真正更新。

在 UI 线程中 hibernate 是一个非常糟糕的主意。

如果你想做这样的事情,你应该使用Timer 。 (我假设您正在使用 Swing。如果没有,请编辑您的问题以表明您正在使用哪个 UI 框架。)

您还应该注意,Thread.sleep 是一个静态方法。您使用它就像它是一个实例方法一样。诚然,您碰巧在当前线程“上”调用它,但您的用法表明您认为:

Thread t = new Thread(...);
t.start();
t.sleep(1000);

将使线程 hibernate 。它不会 - 它会让当前线程 hibernate ,因为这就是 Thread.sleep 总是做的事情。在我看来,Java 允许您以这种方式调用静态方法是一个错误 - 如果您使用的是 Eclipse,则可以选择将其设置为警告或错误。

关于Java: mytextarea.setText ("hello") + Thread.sleep(1000) = 奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2034321/

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