【发布时间】:2012-06-17 15:20:21
【问题描述】:
只是想弄清楚如果您在非 EDT 线程中更改 DefaultMutableTreeNode 的用户对象,就线程而言会发生什么?
我不是在谈论 DefaultTreeModel 事件,即 insertNodeInto 和 removeNodeFromParent,我很清楚它们应该始终在 EDT 中运行...我认为...
在节点的用户对象发生变化的情况下,似乎 JTree.TreeModelHandler 是“侦听”此类事件的东西……但有理由期望侦听器只会收到此类事件的通知更改事件发生的线程?并且只会在同一个线程中传播它的响应?
因此,很明显,我假设这是一个相当基本的“观察者”模式。
那么这是否意味着 JTree 节点中的大多数更改实际上必须发生在 EDT 中,否则会冒着事情不会按您预期发生的风险?
在 DefaultMutableTreeNode 的 API 中确实说“你必须自己进行同步”...
【问题讨论】:
标签: java swing jtree treenode event-dispatch-thread