JavaFX中属性的延迟初始化

时间:2012-11-30 19:40:56

标签: java javafx-2 javafx

似乎懒惰的属性初始化是JavaFX中常见的设计模式。例如,OpenJFX Labeled implementation包含以下代码段:

public final StringProperty textProperty() {
    if (text == null) {
        text = new SimpleStringProperty(this, "text", "");
     }
     return text;
}

鉴于可以想象从JavaFX UI线程以及其他潜在客户端线程以及此实现is not thread safe访问该属性,这似乎是一个错误。鉴于模式的使用频率,这是一个非常严重的问题,或者访问控件上的属性并不是为了线程安全(我误解了JavaFX并发策略)。

任何人都可以解释不使懒惰初始化线程安全的理由吗?

1 个答案:

答案 0 :(得分:5)

JavaFX不是线程安全的,它就像Swing一样受到线程限制。实际上,如果您不从JavaFX线程中使用它,JavaFX API中的许多方法都会抛出异常。