一尘不染

Thread.Sleep()冻结

java

这是一个片段

kit.insertHTML(doc, doc.getLength(), "Hello", 0, 0, null);
try{
Thread.sleep(1000);
}catch(Exception e){}

我正在使用HTMLEditorKit()HTMLDocument()作为文本框。文本框应显示“
Hello”,然后等待一秒钟,但是,当我尝试执行此操作时,它会等待一秒钟,然后放置“ Hello”一词,这不是我想要的。

我不确定为什么会这样,因为我将其按逻辑顺序放置。如果有人可以帮助我,那就太好了。

编辑:

有谁知道替代方案,所以我可以使用“延迟”效果吗?


阅读 247

收藏
2020-09-09

共1个答案

一尘不染

永远不要从Swing事件线程中调用Thread.sleep(…),因为这会使事件线程本身进入睡眠状态。由于此线程负责所有Swing绘画和用户交互,因此这会使您的应用程序进入睡眠状态。

如果您只想延迟显示时间,请考虑使用Swing
Timer

另一方面,如果您的事件线程被长时间运行的任务所破坏,请使用SwingWorker在后台执行任务(如Guillaume 1+向他建议的那样)。

2020-09-09