Nowadays some says it is not suitable to use Platform.runLater()
for updating the UI from a non-JavaFX Thread and Oracle site introduce a way with bindings for
As updateMessage() on a Task finally uses Platform.runLater() to update the messageProperty, it is no alternative to a direct runLater() in your code. So the essence is:
JavaFX is not multithreaded, any Porperty binding will only work if the property is modified in the JavaFX thread, e.g. by using Platform.runLater().