1

プロパティの遅延初期化は、JavaFXでは頻繁に行われるデザインパターンのようです。たとえば、OpenJFXラベル付き実装には次のスニペットが含まれています。

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

プロパティはJavaFXUIスレッドやその他の潜在的なクライアントスレッドからアクセスされる可能性があり、この実装はスレッドセーフではないことを考えると、これはバグのようです。パターンが使用される頻度を考えると、これは非常に深刻な問題であるか、コントロールのプロパティへのアクセスがスレッドセーフであることを意図していません(JavaFXの同時実行戦略を誤解しています)。

怠惰な初期化をスレッドセーフにしない理由を誰かが説明できますか?

4

1 に答える 1

5

JavaFXはスレッドセーフではなく、Swingと同じようにスレッドに制限されています。実際、JavaFXスレッドから使​​用しない場合、JavaFXAPIの多くのメソッドは例外をスローします。

于 2012-11-30T20:02:52.353 に答える