ok ora mi è più chiaro il concetto, devo solo applicarlo al mio problema

quale mi conviene implementare? cioè creo un'altra classe che mi fa da parcheggio oppure mi tengo l'istanza del thread e lo blocco/ risveglio dalla classe chiamante? al momento il mio codice è così strutturato

qui il run del thread
codice:
   public void run() {
        while (run) {
            synchronized (this) {
                try {
                    wait();
                } catch (InterruptedException ex) {
                    Logger.getLogger(MioThread.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            faiQuesto();
        }
    }
questo è il codice della classe che lo richiama (ovviamente questo è in un blocco istruzioni che si ripete ogni tot millisecondi con x e y diverse ogni volta)
codice:
        istanzaMioThread.tieniLeInformazioni(x, y);
        synchronized (this.istanzaMioThread) {
            this.istanzaMioThread.notify();
        }