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

为什么Swing线程模型被认为是错误的,应该怎么做?[关闭]

常培
2023-03-14
问题内容

我多次听到JavaSwing线程模型是错误的。我不完全理解为什么,我知道这个问题与您可以Drawable从主UI线程以外的其他线程中使用a有关。我知道有类似的实用程序功能SwingUtilities.invokeAndWaitSwingUtilities.invokeLater并且允许您在中进行绘画Runnable,而该绘画又由EventDispatcher线程运行。我猜想您可以通过这种方式确保绘画同步进行,并且不会使缓冲区处于不稳定状态。

我的问题是 :“好的” UI工具包的行为如何?采用什么解决方案?


问题答案:

9.1为什么GUI是单线程的?

…在过去,GUI应用程序是单线程的,并且GUI事件是从“主事件循环”处理的。现代的GUI框架使用的模型仅稍有不同:它们创建了专用的事件分发线程(EDT)来处理GUI事件。单线程GUI框架不是Java独有的。Qt,NextStep,MacOS
Cocoa,X
Windows和许多其他工具也是单线程的。这不是因为缺乏尝试。曾经有很多尝试编写多线程GUI框架的尝试,但是由于竞态条件和死锁的持续问题,它们最终都到达了单线程事件队列模型,在该模型中,专用线程从队列中提取事件并将其分派给应用程序-
定义的事件处理程序…




 类似资料:
  • 我有一个问题,关于什么是正确的做法,使用SwingU实用程序的调用稍后方法。 所以首先,我想确认我理解正确。 据我所知,对GUI的更改必须在EDT上完成,因为Swing组件不是线程安全的。invokeLater方法将Runnable作为参数,该Runnable中包含的任何内容都将在EDT上运行。因此,对Swing组件的任何调用都被放入一种队列中,在EDT上一次执行一个。 有了这些,我的问题是:使用

  • 问题内容: 为什么每个人都告诉我编写这样的代码是一种不好的做法? 我省略花括号的最大论据是,有时花括号可能是花括号的两倍。例如,以下代码为C#中的标签绘制发光效果。 您还可以获得链接usings在一起的额外好处,而不必缩进一百万次。 花括号的最常见参数涉及维护编程,以及在原始if语句及其预期结果之间插入代码会引起的问题: 问题: 想要使用该语言提供的更紧凑的语法是错误的吗?设计这些语言的人很聪明,

  • 我下载了mnist数据集(jpg),并用. hdf(. h5)创建了一个模型文件。 图像是使用. h5模型识别的,但是识别率很低... 。 实际编译时精度很低... 我做了吗有问题吗?。 。 图像使用了灰度的28x28图像... ... 历元98/100 1257/1257[==============================================================

  • 本文向大家介绍redis 的线程模型是怎么样的?相关面试题,主要包含被问及redis 的线程模型是怎么样的?时的应答技巧和注意事项,需要的朋友参考一下 redis 内部使用文件事件处理器 ,这个文件事件处理器是单线程的,所以 redis 才叫做单线程的模型。它采用 IO 多路复用机制同时监听多个 socket,根据 socket 上的事件来选择对应的事件处理器进行处理。 文件事件处理器的结构包含

  • 问题内容: 我问了一个一般性的Spring问题:自动播发Spring Bean,并让多个人回答说应尽可能避免调用Spring 。这是为什么? 我还应该如何访问配置了Spring创建的Bean? 我在非Web应用程序中使用Spring,并计划按照LiorH的描述访问共享对象。 修正案 我接受下面的答案,但这是Martin Fowler的另一种选择,他讨论了依赖注入与使用(本质上与调用相同)的优点。

  • 问题内容: 通过Dojo执行AJAX时,我们可以传递两个回调,一个回调在成功请求后执行,另一个在错误发生后执行: 我在文档中找不到 定义为错误的内容 。我猜返回值> = 400的任何东西,但我不确定。 问题答案: 一般来说,HTTP响应代码失败。该判定通过调用dojo._isDocumentOk正如你可以看到基本上接受2XX和304再加上一些浏览器的怪癖的东西。