我通过修改可观察数组列表来更新表,但现在 2 个线程可能会修改可观察数组列表。我应该将修改列表的代码放在同步方法中,还是只允许 1 个线程修改列表?
最佳答案
对于这个特定的用例 - ObservableList
绑定(bind)到 TableView
,您只能从 FX Application Thread 访问列表。这是因为对列表的更改将导致对 TableView
和 all changes to the scene graph must occur on the FX Application Thread 的更改。 .
所以在这种情况下,关于 ObservableList
是否线程安全的问题是一个有争议的问题:由于其他原因你只能从单个线程访问它,所以你不需要它成为。
如果您有一个需要更新列表的后台线程,您可以将这些更新包装在对 Platform.runLater(...)
的调用中,从而安排这些更新在 FX 应用程序线程上发生。 , 或者(这可能更可取)通过使用 javafx.concurrent
API管理您的线程。
关于java - 在 JavaFX 中,observableArrayList 线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32498307/