我们将 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/