O que é um listener, como e quando utilizar?

Olá novamente, estive pesquisando sobre como fazer com que um JInternalFrame seja atualizado quando um outro JInternalFrame seja fechado e vi vários usuários sugerindo o uso de listener, tentei pesquisar sobre mas não consegui entender como funciona e principalmente como aplica-lo praticamente ao código, se alguém puder me explicar eu agradeço.

Os listeners em Java são os “escutadores” ou “ouvidores” que são objetos executados quando algum evento acontece, é exatamente o padrão Observer/Observable. Se olhar a documentação do JInternalFrame, terá o método addInternalFrameListener que adiciona um InternalFrameListener, nesta interface tem o método internalFrameClosed que é chamado quando o JInternalFrame é fechado, então:

class CustomInternalFrameListener implements InternalFrameListener {
  public void internalFrameClosed(InternalFrameEvent e) {
    outroInternalFrame.atualizar();
  }
}

JInternalFrame esteInternalFrame;
JInternalFrame outroInternalFrame;
esteInternalFrame.addInternalFrameListener(new CustomInternalFrameListener());

https://docs.oracle.com/javase/7/docs/api/javax/swing/JInternalFrame.html
https://docs.oracle.com/javase/7/docs/api/javax/swing/event/InternalFrameListener.html

A tradução mais coerente de listener seria “observador” (eu sei, é incoerente, visto que a tradução literal é “ouvidor”, “aquele que ouve”).
Por que isso? É o listener que observa as ações (quaisquer que sejam) que irão disparar um evento qualquer.

Certo, eu entendi o que é um listener, porém ainda tenho dúvidas de como aplicar ele em vários frames, irei estudar mais sobre, obrigado o/