当前位置: 首页 > 知识库问答 >
问题:

在Java7+中,Swing repaint()方法在EDT之外使用是否仍然安全?

丰博
2023-03-14

我知道,即使使用Swing的线程模型,过去也认为从任何线程调用repaint()和其他一些选定的方法是安全的,但是最近在一篇评论中告诉我,情况并非如此。

谷歌发现了很多旧的讨论,说它是安全的,但最近没有。所有过去说它是安全的官方参考似乎都消失了,我发现一些人在各种论坛上讨论它是如何不再安全的。

不过,我找不到任何官方的东西来确认它是还是不是--如果它已经改变了,我真的很想看到一些东西来解释改变的逻辑。考虑到它有破坏现有应用程序的严重风险,删除它似乎是一个非常奇怪的特性。

实际上,我正在寻找一个官方引用的链接(即Javadoc、oracle教程或源代码链接),说明从任何线程调用这些方法是否安全。

以下问题可供参考:

在EDT外使用component.repaint()安全吗?

引用了《太阳报》一个现已消失的页面中的一句话:

从任何线程调用以下JComponent方法都是安全的:repaint()、revalidate()和invalidate()。repaint()和revalidate()方法分别对事件调度线程调用paint()和validate()的请求进行排队。

http://docs.oracle.com/javase/7/docs/technotes/guides/swing/enhancements-7.html

http://docs.oracle.com/javase/7/docs/technotes/guides/awt/enhancements-7.html

共有1个答案

乐正玺
2023-03-14

这是官方的参考:

一般来说,Swing不是线程安全的。所有Swing组件和相关类,除非另有文档,都必须在事件分派线程上访问。

并且repaint方法不“文档否则”。

 类似资料:
  • 问题内容: 我找不到任何官方文档说可以安全地从事件调度线程EDT之外的另一个线程进行调用。 是这样吗 在哪里可以找到一些文档/代码? 问题答案: 这是官方网页上的一句话: 下面的JComponent方法是安全的,从任何线程调用: ,,和。该和方法队列事件派发线程请求调用和分别。 编辑1: 由于前面提到的链接已转移。我正在发布一个新链接,尽管实际上可能需要花费更多时间才能真正知道此页面的真实性,因为

  • java版本“1.6.0_37”java(TM)SE运行时环境(build 1.6.0_37-B06-434-11M3909)java HotSpot(TM)64位服务器VM(build 20.12-B01-434,混合模式) 如果在尝试安装java应用程序(LatexDraw)时总是出现错误,那么terminal上的版本6就不会有问题: :CGContextGetCTM:无效上下文0x0 :CG

  • 问题内容: 我正在计划制作Java Swing应用程序,并且想知道是否仍在使用Swing或是否已将其替换为其他东西。 提前致谢! 问题答案: 我们仍然使用它。并非所有的东西都是Web应用程序,到目前为止,已经进行了一些尝试性的替换(例如,将Eclipse写入到 SWT 中)。SWT拥有一个本机层,将基础调用包装到本机窗口层。它仅适用于有限的平台集,并且当然需要一些第三方共享库。我敢说,SWT应用程

  • 问题内容: 我想像这样的代码来获取有关Java7功能的详细信息 可以做这样的事情 但坦白说对我来说还不太清楚。请解释一下? 问题答案: Null-safe方法调用是针对Java 7提出的,作为Project Coin的一部分,但并未最终发布。 在此处查看所有建议的功能以及所有最终选择的功能-https: //wikis.oracle.com/display/ProjectCoin/2009Prop

  • 问题内容: 据我所知,使用旧的JMM来实现懒惰单调的DCL(双重检查锁定)技巧被打破了,但是我坚信它已被新的JMM和volatile字段所修复… 但是,在这篇不错的文章中,这显然已经足够新,足以引用DCL中的新旧JMM和volatile字段,表明它仍然坏了… 我在这里到那里读到它是固定的,然后我发现了这一点……有人可以最后说它是否损坏了? 我的理解是,通过波动性地在关系发生之前保证发生的先兆并有效

  • 问题内容: 我正在做与此问题类似的事情,在此我有一个复选框列表作为自定义编辑控件。区别在于我想从服务器获取列表(不是在客户端使用 Check1,Check2,Check3进行 硬编码)。 在列设置或 custom_element 函数中,有什么方法可以这样做吗? 似乎我需要与用于选择项的 dataUrl 属性类似的 东西 ,但这似乎仅适用于选择项(不适用于自定义项)。 有什么建议? 问题答案: 您