Como pegar dados da thread ?

Olá a todos
Editei o post antigo para que fique mais claro a minha duvida.
Estou trabalhando com Jnativehook e lendo o código da classe GlobalScreen percebi que ele cria uma Thread para cada evento disparado. Como posso fazer para pegar os dados e passar para uma variável que seja acessível de qualquer uma das novas threads que serão geradas. ou a unica solução e criar um arquivo texto?
Estou testando com arquivo texto mas sem sucesso devido as threads nem sempre estarem sendo executadas na ordem em que foram criadas. segue meu código atual `Texto pré-formatado public class EnterpretadorQRcode implements NativeKeyListener {

public static void main(String[] args) {
    
    try {
        Logger logger = Logger.getLogger(GlobalScreen.class.getPackage().getName());
        logger.setLevel(Level.OFF);
        logger.setUseParentHandlers(false);
        GlobalScreen.registerNativeHook();
        
        
    } catch (NativeHookException e) {
        System.err.print("Erro ao registrar");
        System.err.println(e.getMessage());
        System.exit(1);
    }
    GlobalScreen.addNativeKeyListener(new EnterpretadorQRcode());
}

@Override
public void nativeKeyTyped(NativeKeyEvent e) {
    
}

@Override
public void nativeKeyPressed(NativeKeyEvent e) {
    
   try{ 
    ArquivoTxt arquivoTxt = new ArquivoTxt();
    switch (e.getKeyCode()) {
        case NativeKeyEvent.VC_ENTER:
           
            System.out.println(arquivoTxt.leitor());
            break;
        case NativeKeyEvent.VC_SPACE:
            arquivoTxt.escritor(" ");
            break;
        case NativeKeyEvent.VC_SHIFT:
            break;
        case NativeKeyEvent.VC_ESCAPE:
            
            
        default:
            arquivoTxt.escritor(NativeKeyEvent.getKeyText(e.getKeyCode()));
            break;
    }
    }catch ( IOException en ) {
    
    }
}

@Override
public void nativeKeyReleased(NativeKeyEvent e) {
    
}
} 
class ArquivoTxt {

private static final String caminho = "c:/tmp/file.txt";

public ArquivoTxt() {
    File file = new File(caminho);
    if ( file.exists() || file ==  null ){
        System.out.println("Arquivo ja existe"); 
    } else {
        file = new File(caminho);
        System.out.println("Arquivo criado");
    }
    
}

public String leitor()throws IOException{

    try{
    ReversedLinesFileReader reader = new ReversedLinesFileReader(new File(caminho),StandardCharsets.UTF_8);
    return reader.readLine();
    }catch (IOException e)  {
    return null;
    }
}


public void escritor(String letra) throws IOException{
    
    BufferedWriter escritor = new BufferedWriter(new FileWriter(caminho));
    escritor.write(letra);
    escritor.close();


}
}