Refresh em JTextArea não ocorre

Fala pessoal, tudo certo? eu estou tentando fazer um “log” que a medida que vai processando os dados por baixo dos panos o usuário vai vendo na telinha o que esta acontecendo pra não pensar que está travado… A ideia é simples, e a execução eu imaginei que seria também, porém, já tentei usar threads pra view e pro método que popula a tabela mas não consigo, depois que finaliza a emissão ele mostra na tela o que aconteceu, e eu preciso que seja em tempo real, alguém teria uma luz para mim?

Método que popula a textArea

public static void setTextForLoaderViewNFCe(String informacao) {
		StringBuilder builder = new StringBuilder();
		String textoEspelhoNotaFiscal = null;

		builder.append(informacao);
		textoEspelhoNotaFiscal = builder.toString();

		LoaderViewNFCe.getLoaderViewNFCe().textAreaNotificacaoNFCe.insert(textoEspelhoNotaFiscal,
				LoaderViewNFCe.getLoaderViewNFCe().textAreaNotificacaoNFCe.getCaretPosition());
		LoaderViewNFCe.getLoaderViewNFCe().textAreaNotificacaoNFCe.append("\n");
		LoaderViewNFCe.getLoaderViewNFCe().textAreaNotificacaoNFCe.update(LoaderViewNFCe.getLoaderViewNFCe().textAreaNotificacaoNFCe.getGraphics());
	}

JFrame da view do “Loader”

public class LoaderViewNFCe extends JFrame{

	private static final long serialVersionUID = 1L;

	private static LoaderViewNFCe loaderViewNFCe;
	
	private JPanel panelExternal;
	private JPanel panelWithComponents;
	public JTextArea textAreaNotificacaoNFCe;
	private JLabel lblEmitindoNFCe;
	
	/*
	 * Create the application.
	 */
	public LoaderViewNFCe() {
		initialize();
	}

	/*
	 * Initialize the contents of the frame.
	 */
	private void initialize() {
		this.setBounds(100, 100, 330, 215);
		this.setIconImage(Toolkit.getDefaultToolkit().getImage("./db/resources/images/icone.png"));
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setUndecorated(true);
		this.setResizable(false);
		this.setLocationRelativeTo(null);
		this.getContentPane().setLayout(null);
		this.getContentPane().add(getPanelExternal());
		this.setBackground(new Color(0,0,0,0));
		setLoaderViewNFCe(this);
		}
	
	private JPanel getPanelExternal() {
		if(panelExternal == null) {
			panelExternal = new RoundedPanel(15);
			panelExternal.setOpaque(false);
			panelExternal.setBackground(new Color(48, 61, 108));
			panelExternal.setBounds(0, 0, 331, 216);
			panelExternal.setLayout(null);
			panelExternal.add(getPanelWithComponents());
		}
		return panelExternal;
	}
	
	private JPanel getPanelWithComponents() {
		if(panelWithComponents == null) {
			panelWithComponents = new RoundedPanel(15);
			panelWithComponents.setOpaque(false);
			panelWithComponents.setBackground(new Color(135, 158, 208));
			panelWithComponents.setBounds(5, 5, 321, 206);
			panelWithComponents.setLayout(null);
			panelWithComponents.add(getTextAreaNotificacaoNFCe());
			panelWithComponents.add(getLblEmitindoNfce());
		}
		return panelWithComponents;
	}
	
	private JTextArea getTextAreaNotificacaoNFCe() {
		if(textAreaNotificacaoNFCe == null) {
			textAreaNotificacaoNFCe = new JTextArea();
			textAreaNotificacaoNFCe.setEditable(false);
			DefaultCaret caret = (DefaultCaret) textAreaNotificacaoNFCe.getCaret();
			caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
			caret.setUpdatePolicy(DefaultCaret.OUT_BOTTOM);
			textAreaNotificacaoNFCe.setRows(1);
			textAreaNotificacaoNFCe.setTabSize(15);
			textAreaNotificacaoNFCe.setBackground(new Color(220, 227, 250));
			textAreaNotificacaoNFCe.setBounds(5, 49, 311, 152);
			textAreaNotificacaoNFCe.setFont(new Font("Tahoma", Font.PLAIN, 14));
		}
		return textAreaNotificacaoNFCe;
	}
	
	private JLabel getLblEmitindoNfce() {
		if(lblEmitindoNFCe == null) {
			lblEmitindoNFCe = new JLabel("Imprimindo NFCe");
			lblEmitindoNFCe.setFont(new Font("Tahoma", Font.BOLD, 16));
			lblEmitindoNFCe.setHorizontalAlignment(SwingConstants.CENTER);
			lblEmitindoNFCe.setBounds(74, 11, 163, 28);
		}
		return lblEmitindoNFCe;
	}
	
	public static LoaderViewNFCe getLoaderViewNFCe() {
		return loaderViewNFCe;
	}

	public void setLoaderViewNFCe(LoaderViewNFCe loaderViewNFCe) {
		LoaderViewNFCe.loaderViewNFCe = loaderViewNFCe;
	}
	
}

Ultimo tipo de tentativa de chamada do método(Também não funcionou)

new Thread(new Runnable() { 
			public void run() { 
				LoaderViewNFCe loaderNFCe = new LoaderViewNFCe();
				loaderNFCe.setVisible(true); 
				} 
			}).start();
		new Thread(new Runnable() { public void run() { PopulaLoaderViewNFCe.setTextForLoaderViewNFCe("Configurando NFCe para emissão..."); } }).start();

desde já agradeço se alguém puder me ajudar a resolver isso.