java - 在 EMF 模型中使用 Java 关键字 volatile

标签 java concurrency eclipse-rcp volatile emf

我们将 EMF 2.7 与多线程 Eclipse RCP 3.x 应用程序结合使用。现在,一些 EMF 模型和特性/属性分别由不同的线程访问。所以我们需要让这些变量volatile [1]。

有没有办法在 .ecore 或 .ecorediag 文件中配置 EMF 模型的属性,使代码生成器自动在生成的模型代码中添加 volatile 关键字?还是我们必须在生成的代码中手动添加它(尽管它不合适......)?

如果可以在模型定义中而不是在生成的代码中指定“volatile”,那将非常有用。

这是在生成的 EMF 模型中手动添加 volatile 的示例:

public class EGuiStateImpl extends MinimalEObjectImpl.Container implements 
     EGuiState {
/**
* @generated NOT
*/
protected volatile ESummary summary;

[1] Java 关键字volatile 用于指示变量的值将被不同的线程修改。

最佳答案

默认情况下,EMF 生成的模型未为多线程做好准备。 EMF 中的“ volatile ”意味着属性(又名特性)不会生成任何字段,它与 Java 的 volatile 语法无关。 (您应该阅读 EMF 书或至少阅读 EMF Refcardz)

您始终可以修改 javajet 模板以生成不同的代码,但同样不建议这样做,因为默认的 EMF 生成不是为多线程设计的。

如果您需要基于 EMF 的多线程应用程序,请考虑使用 EMF CDO它还支持交易。

关于java - 在 EMF 模型中使用 Java 关键字 volatile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27529398/

相关文章:

java - Sikuli 没有看到我正在尝试自动化的游戏

java - 为什么从 ArrayList 开头删除元素比从末尾删除元素慢?

java - 计算 BigInteger 的位数和字数

java - 为什么条件是从 Lock 创建的,而不是使用 'new' 运算符?

java - ExecutorService线程安全

java - 通过键名锁定数据库编辑

java - 在 RCP 应用程序中运行测试时,SWTBot 使 JVM 崩溃

java - 如何消除Android ExceptionInitializeError?

java - 在FigureCanvas上的现有节点之间绘制PolylineConnection

java - 如何在 Eclipse 编辑器中获取所有打开文件的列表?