gpt4 book ai didi

java - 在 Eclipse EMF 中使用抽象迭代器时出现空指针异常

转载 作者:太空宇宙 更新时间:2023-11-04 14:20:17 25 4
gpt4 key购买 nike

我正在努力让多线程应用程序与 EMF 模型一起使用。问题是,由于某种原因,以下代码在 next() 处抛出未处理的 NullPointerException:

TreeIterator<EObject> i = myEObject.eAllContents();
if (i.hasNext()) {
EObject o = i.next();
// Process o...
}

此问题仅在同时访问 EMF 资源的多线程应用程序中出现。我通过 wait()/notify() 添加了线程同步保护函数,但仍然遇到相同的错误。

大家有遇到过类似的问题吗?您知道哪些 EMF 函数是线程安全的,哪些是非线程安全的吗?

预先感谢您的帮助!

最佳答案

我找到了错误:使用 eAllContents() 进行迭代时,EMF 不检查并发修改;然而,在这种情况下,我有一个。这一事实导致了迭代器本身的修改,进而以 NullPointerException 结束。

因此,似乎eAllContents()函数不应该在多线程应用程序中使用。相反,应该通过每个 EClass 的实际属性来访问模型元素以避免此问题。

关于java - 在 Eclipse EMF 中使用抽象迭代器时出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27275894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com