instancia continua rodando mesmo depois de fechada por uma thread

Bom mesmo após fechar minha instancia ela continua rodando por conta de uma thread que eu criei para chamar um while:

public void nativeKeyPressed(NativeKeyEvent event) {         System.out.println("Key Pressed: " + NativeKeyEvent.getKeyText(event.getKeyCode()));         if (event.getKeyCode() == NativeKeyEvent.VC_BACKQUOTE) {             keepPressingO = true;             new Thread() {                 @Override                 public void run() {                     try {                         while (keepPressingO) {                              Robot robot = new Robot();                              robot.keyPress(KeyEvent.VK_Q);                              Thread.sleep(26);                              robot.keyRelease(KeyEvent.VK_Q);                              robot.keyPress(KeyEvent.VK_W);                              Thread.sleep(16);                              robot.keyRelease(KeyEvent.VK_W);                              robot.keyPress(KeyEvent.VK_E);                              Thread.sleep(26);                              robot.keyRelease(KeyEvent.VK_E);                         }                      } catch (AWTException e) {                         e.printStackTrace();                     } catch (InterruptedException e) {                         // TODO Auto-generated catch block                         e.printStackTrace();                     }                 }             }.start();          }          if (event.getKeyCode() == NativeKeyEvent.VC_ENTER) {             keepPressingO = false;         }      } 

Alguém poderia me ajudar como eu resolvo essa situação? Como eu conseguiria por a thread para dormir quando ela sair do while ( e se voltasse pro if ela acordaria?)

E como eu conseguiria chamar essa thread dentro de um windowClosing para matar ela?