当前位置: 首页 > 面试题库 >

Thread.Sleep()冻结

鞠泰平
2023-03-14
问题内容

这是一个片段

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

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

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

编辑:

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


问题答案:

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

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

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



 类似资料:
  • 问题内容: 目标:偶尔执行某些代码。 问题:就性能而言,以下各项之间是否存在重大差异: 和 ? 当然,后一种选择更适合犹太人。但是,我想知道是否应该进行一次冒险,即“花几天时间重构遗留代码以告别Thread.sleep()”。 更新:此代码在超级/大型/超级高负载环境中运行。 问题答案: 您正在处理以数十秒为单位的睡眠时间。通过在此处更改睡眠选项可能节省的时间可能是纳秒或微秒。 我每次都更喜欢后一

  • 问题内容: 我们很少有扩展基本类的类。我们注意到我们使用了“退出一些睡眠”方法,并且希望在发生睡眠时进行记录。有没有一种方法可以覆盖Thread.sleep方法,在其中我可以添加一些自定义逻辑(即记录),然后仅调用实际的Thread.sleep()?这样,我就不必更改在我的基类中使用Thread.sleep的所有位置。我也愿意接受其他选择。 问题答案: 您不能重写方法,因为它是本机方法,所以无法对

  • 问题内容: 今天,我有一个采访上,我问候选人很平常和基本的问题有关的区别和。我以为他会回答类似这样的,但他说,这些方法基本上是一样的,而且极有可能是用在它里面,但本身并不需要外部锁。这不是完全正确的答案,因为在JDK 1.6中此方法具有以下签名。 但是我的第二个想法是,这不是那么可笑。可以使用定时等待来达到相同的效果。看一下以下代码片段: 在这种情况下,一个对象特别用于同步块内部方法。我假设Sun

  • 问题内容: 如果我要打个电话让Java Thread进入睡眠状态,是否有理由偏爱其中一种而不是另一种? 要么 问题答案: 会打电话给。唯一的区别是可读性,在不明显的持续时间内使用(例如:vs .)可能更容易理解。 供参考,请参见以下in 中的代码:

  • 问题内容: 我需要将while循环暂停特定的毫秒数。我尝试使用,但是它不准确,尤其是在循环场景中。毫秒精度在我的程序中很重要。 这是我不希望在expectedElapsedTime通过之前检查条件的算法。 问题答案: 你能指望什么? 如果您进入睡眠状态,则一旦您的进程再次可运行,就必须等待线程调度程序再次对其进行调度。 我的意思是如果您进入睡眠状态50秒钟,这并不意味着您的进程将在完全50秒钟内运

  • 我一直试图使这个应用程序,将产生一个折线图后,我点击"添加新数据项"按钮。现在,在我点击按钮后,什么都没发生(gui冻结),在我最大化框架后,图形出现在框架内,这意味着我的程序工作了,但我不知道为什么我的gui冻结了。我见过类似的问题,人们回答说必须引入一个新的线程来处理不同的拍摄,我也尝试过,但它仍然不起作用,只是让情况变得更糟。有人知道我犯了什么错误吗?这是我的代码: 谢谢你!