JavaFX操作中的切换按钮将被2个独立的线程访问。是否在JavaFX原子中切换按钮的操作?
一个线程将尽快如果(a)成功 C)出口上的成功被调用为用户点击(切换按钮的状态),将 一)做一些在OS b)检查/退出并返回切换按钮之前的状态失败
另一个线程将监测异步到先前的操作(S)和在一个特定的事件它将改变按钮状态的情况下的事件。
我是否需要提供线程和锁定按钮状态方面之间的同步?
编辑:詹姆斯_D提出的想法似乎是合理的,但我只是想提出一种替代方案(其有效性仍有待证明)。 如何使用同步代码块,并且使用作为锁定参照特定的按钮,即是这样的:
// getting the reference to the button
@FXML
private ToggleButton tButtonToBeSynchronized
// Thread1
synchronized(tButtonToBeSynchronized) {
// do stuff with button upon user click
}
// Thread2
synchronized(tButtonToBeSynchronized) {
// poll system every X seconds
// when asynchronous event occurs (not related to UI events)
// update tButtonToBeSynchronized state
}
会在情况下工作,这些是由不同的控制器类称为? (假设参考tButtonToBeSynchronized
是通过引用传递的 - 而不是通过FXML框架的值传递的?
不,这是行不通的。您也需要FX库代码来同步按钮。它不会 - 它假设您只访问FX应用程序线程中场景图的一部分的节点。即使它“有效”,但在Java 8中,如果尝试从另一个线程操纵状态,则会在运行时引发异常的显式检查。 – 2014-10-02 17:38:45