JavaFX Concurrency : Update multiple messages from Service
<p>How can we update multiple controls from a single Service. Right now there is only one single <code>updateMessage()</code> in Service, whose value can be bound to just one control and hence update just that. How can we update values for multiple controls ?</p>

<p>My instance of Service Class:</p>

<pre><code>//run a background thread
threadTimeChecker = new Service&lt;Void&gt;() {
      @Override
      protected Task&lt;Void&gt; createTask() {
           return new Task&lt;Void&gt;() {
               @Override
               protected Void call() throws Exception {
                   while (!isDone) {
                       DataHelper.setCurrentDate(LocalDate.now());
                       if(!DataHelper.getOldDate().equals(DataHelper.getCurrentDate())) {
                          DataHelper.setIntIndex(DataHelper.getIntIndex()+1);
                          DataHelper.setOldDate(DataHelper.getCurrentDate());
                          DataHelper.saveData();
                          System.out.println("Saved!");
                       }
                       //Thread.currentThread().sleep(2000);
                       updateMessage(wordString.getValue());
                   }
                   return null;
               }
           };
      }
};
threadTimeChecker.restart();

//bind string properties to labels
word.textProperty().bind(threadTimeChecker.messageProperty());
</code></pre>

<p>This only updates one message i.e. I can only bind one label. Is there any way I can update multiple messages from the same thread so I can bind multiple labels in my UI?  </p>

<p><strong>EDITED</strong> - More Information according to comments</p>

<p>My runnable is:</p>

<pre><code>@Override
protected Task&lt;Void&gt; createTask() {
    return new Task&lt;Void&gt;() {
        @Override
        protected Void call() throws Exception {
            //loop run until the program is closed
            while (!isDone) {
                DataHelper.setCurrentDate(LocalDate.now());
                if (!DataHelper.getOldDate().equals(DataHelper.getCurrentDate())) {
                    Platform.runLater(new Runnable(){
                        @Override
                        public void run() {
                            DataHelper.setIntIndex(DataHelper.getIntIndex()+1);
                        }
                    });
                    DataHelper.setOldDate(DataHelper.getCurrentDate());
                    DataHelper.saveData();
                }
                Thread.currentThread().sleep(5000);
            }
            return null;
        }
    };
}
</code></pre>

<p>I run a thread to change <code>DataHelper.IntIndex</code> which invokes a listener that changes the 'String Property' as per the index like:</p>

<pre><code>//listener to detect change in index and assign strings of word,meaning, and sentence, accordingly
DataHelper.intIndexProperty().addListener(
        (v, oldValue, newValue) -&gt; {
            wordString.setValue(DataHelper.getListOfWords().get((int) newValue).get("word"));
            meaningString.setValue(DataHelper.getListOfWords().get((int) newValue).get("meaning"));
            sentenceString.setValue(DataHelper.getListOfWords().get((int) newValue).get("sentence"));
            System.out.print("kjbmmj");
        }
);
</code></pre>

<p>And I have used these 'String Properties' to bind to three different labels correspondingly like:</p>

<pre><code>//bind string properties to labels
word.textProperty().bind(wordString);
meaning.textProperty().bind(meaningString);
sentence.textProperty().bind(sentenceString);
</code></pre>

<p>Now what I want to do is to use more <strong>JavaFX</strong> <strong><em>inclined</em></strong> <code>updateMessage</code> to achieve the same.</p>