2
如果我添加的onChange聽衆一個JavaFX財產,JavaFX的財產聽衆訂貨
- 是聽衆的順序調用?如果我有一個字符串屬性,然後將字符串轉換爲「Alice」,然後轉換爲「Bob」,我保證在看到「Bob」之前看到「Alice」。實際上,只要我看不到「Bob」後我是否在意是否看到「Alice」
- 是否按順序調用偵聽器?我的聽衆是否有可能同時被「Alice」和「Bob」通知調用?
如果我添加的onChange聽衆一個JavaFX財產,JavaFX的財產聽衆訂貨
注意:您的問題尚不清楚 - 您似乎在詢問觀察事件的順序,而不是調用監聽器的順序(在您的示例中只有一個監聽器)。我會回答事件訂購部分。
長話短說:FX屬性不是線程安全的。只要您在外匯線程中處理屬性,事件將按順序觸發,但是如果您從其他線程訪問屬性,則將應用線程安全的一般規則。
換句話說:
如果您手動創建屬性或更新控件的屬性,但您在沒有正確同步的情況下開始玩線程,則所有投注都將關閉。特別是,如果你寫:
property.addListener(myListener)
一個property.set("Alice")
在線程Bproperty.set("Bob")
在線程C-你的聽衆可能會或可能不會看到「愛麗絲」,它可能或者可能看不到「鮑勃」。它可能實際上看到「愛麗絲」而不是「鮑勃」,它可能會看到「鮑勃」而不是「愛麗絲」。
基本上,我問的是property.addListner(myListener),該線程偵聽器將運行於其上。這聽起來像監聽器將運行在FXThread(除非我失去了一些東西),這解決了我的問題。 –
如果您自己沒有設置屬性,則可以安全地假定您的偵聽器將在fx線程上被調用。如果有疑問,你可以檢查你的聽衆,你是在FX線程。 – assylias