Erro em uma thread javafx

Tenho que mudar um text de button dentro de uma thread mas retorna erro e não executa o setText do button. Essa thread esta dentro do metodo initialize da classe controller. alguem ajuda ai por favor:

new Thread(){
                @Override
                public void run(){
                    try {
                        Thread.sleep(3000);
                        btnRetorno.setText(""); //aqui quero mudar o settext do button
                    } catch (InterruptedException ex) {
                        Logger.getLogger(TelaLogin.class.getName()).log(Level.SEVERE, null, ex);
                        }
                }                    
            }.start(); 

retorna o erro:

Exception in thread "Thread-3" java.lang.IllegalStateException: Not on FX application thread; currentThread = Thread-3
	at javafx.graphics/com.sun.javafx.tk.Toolkit.checkFxUserThread(Toolkit.java:292)
	at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.checkFxUserThread(QuantumToolkit.java:446)
	at javafx.graphics/javafx.scene.Parent$3.onProposedChange(Parent.java:474)
	at javafx.base/com.sun.javafx.collections.VetoableListDecorator.setAll(VetoableListDecorator.java:113)
	at javafx.base/com.sun.javafx.collections.VetoableListDecorator.setAll(VetoableListDecorator.java:108)
	at javafx.controls/javafx.scene.control.skin.LabeledSkinBase.updateChildren(LabeledSkinBase.java:283)
	at javafx.controls/javafx.scene.control.skin.LabeledSkinBase.lambda$new$11(LabeledSkinBase.java:220)
	at javafx.controls/com.sun.javafx.scene.control.LambdaMultiplePropertyChangeListenerHandler.lambda$new$1(LambdaMultiplePropertyChangeListenerHandler.java:49)
	at javafx.base/javafx.beans.value.WeakChangeListener.changed(WeakChangeListener.java:86)
	at javafx.base/com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(ExpressionHelper.java:181)
	at javafx.base/com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:80)
	at javafx.base/javafx.beans.property.StringPropertyBase.fireValueChangedEvent(StringPropertyBase.java:104)
	at javafx.base/javafx.beans.property.StringPropertyBase.markInvalid(StringPropertyBase.java:111)
	at javafx.base/javafx.beans.property.StringPropertyBase.set(StringPropertyBase.java:145)
	at javafx.base/javafx.beans.property.StringPropertyBase.set(StringPropertyBase.java:50)
	at javafx.base/javafx.beans.property.StringProperty.setValue(StringProperty.java:71)
	at javafx.controls/javafx.scene.control.Labeled.setText(Labeled.java:147)
	at br.com.kimsoftwares.controles.TelaLoginControles$1.run(TelaLoginControles.java:61)

Tenta usar o Plataform.runLater

Platform.runLater(new Runnable() {
    @Override
    public void run() {
        // código
    }
});

Obrigado pela resposta.
Deu certo.
Como Defino o intervalo de três segundos.

Usando

Thread.sleep(3000);

É só botar isso dentro de uma thread normal.

Deu certo. Muito Obrigado!!