为什么在单线程上使用 sleep() 会停止执行
Java 引入了一个单独的线程来处理 GUI 元素,称为事件调度线程(美东时间)。在此线程中调用 sleep() 可能会导致两个线程在恢复执行之前等待完成的情况。
发生这种情况是因为 GUI 事件(包括由用户界面组件生成的事件)在 EDT 上处理。当在此线程上调用 sleep() 时,它会有效地挂起所有待处理的 GUI 事件,从而导致用户界面显示为冻结。负责游戏逻辑的主线程也会暂停,直到 sleep() 调用完成。
避免线程停止
防止冻结用户界面,避免在 EDT 上使用 Thread.sleep()。相反,请考虑使用其他方法,例如:
最佳实践
为了确保响应式用户界面,必须遵守遵循以下准则:
以上是为什么在单线程上使用 `sleep()` 会冻结 Java GUI?的详细内容。更多信息请关注PHP中文网其他相关文章!