JavaFX:BooleanProperty等效于volatile boolean

时间:2017-06-08 09:35:22

标签: java multithreading javafx volatile

在普通的Java(非JavaFX)环境中,通常使用volatile boolean running来管理多线程任务。如果我想将它包装成JavaFX属性等价物,我该怎么做呢?

我计划以这种方式实现它,但我不知道它是否正确:

private volatile boolean isRunning;
private final BooleanProperty running = new SimpleBooleanProperty(true) {
    @Override protected void invalidated() {
        isRunning = get();
    }
};

public final BooleanProperty runningProperty() { return this.running; }
public final boolean isRunning() { return this.running.get(); }
public final void setRunning(boolean value) { this.running.set(value); }

public void run() {
    while (isRunning) {
        // Do my stuff...
    }
}

// Reside in another class...
public void methodFromAnotherClass() {
    taskRunningProperty().bind(myTask.runningProperty());
}

该属性将始终从JavaFX Application线程调用,但run()中的任何内容都在另一个线程上。

0 个答案:

没有答案