首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >invokeLater与采用JTextArea的invokeAndWait

invokeLater与采用JTextArea的invokeAndWait
EN

Stack Overflow用户
提问于 2015-11-14 21:26:00
回答 1查看 241关注 0票数 0

我有一个在多线程上运行的Swing应用程序,我在EDT上创建了Swing组件。Executor启动在某个时刻向JTextArea插入文本的线程。但是,与InvokeAndWait不同,InvokeLater并不总是执行追加操作。据我所知,它是异步的,非阻塞的,但仍然应该做附加。怎么会这样呢?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-11-15 00:59:10

使用EventQueue.invokeLater()从另一个线程更新组件的模型是正确同步的必要条件,但不是充分条件。您仍然需要同步对任何共享数据的访问。在这个example中,display()参数s是对不可变Stringfinal引用;可以在display()中安全地访问它,而无需进一步的同步。如果您有一个对可变对象的final引用,请考虑使用thread-safe collection。您可以使用引用的here方法之一来查找违规行为。或者,考虑使用SwingWorker来托管example的后台任务。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33708881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档