I should have read your question and code more carefully...
I think you got the wrong idea about what your code does.
You are starting your thread. All good.
Then you are building a bomb.
You are sending your thread to rest for 3 seconds and you are sending the application thread to sleep for 5 seconds!
Never sleep the application thread!
The updateMessage method is trying to set the new message inside the application thread which is asleep.
I highly doupt that the developers of javafx made precautions for this kind of thing so your "Done!"
String never reaches its property.
In addition to my last answer you could override the done method in your Task class as well.
Edit: Initializable is superceded by the FXML loader.
You should read about it in the javadocs.