Alguém pode me ajudar em como criar uma Thread que fique capturando strings de um JTextField enquant

Alguém pode me ajudar em como criar uma Thread que fique capturando strings de um JTextField enquanto o programa fica em execução?

public class Janela {
    JTextField field;
    ArrayList valores;
    public Janela() {
        field = new JTextField();
        valores = new ArrayList();
        new Thread(new Monitor()).start();
    }
    private class Monitor implements Runnable {
        public void run() {
            while(true) {
                Thread.sleep(3000); // A cada 3 segundos ele capturará o valor do campo
                valores.add(field.getText());
            }
        }
    }
}

Mas você pode fazer com KeyListener também que quando uma tecla for pressionada ele salvará o valor do campo.

Você precisa realmente de uma nova thread? Não basta usar o Document?
Dá uma olhada no tutorial Controlando um JTextField, aqui no GUJ e vê se aquilo não atende.