Problema com bloqueio de Thread

Pessoal, estou tendo um problema meio complicado , não sei

se tem como solucionar isso, mas vou tentar descrever:

Eu tenho uma classe que implementa a interface Runnable, tem

um determinado momento que é criada mais de uma instância

dessa classe e eu quero bloquear as outras instância caso a

primeira ainda esteja em uso .Aí vai uma parte do código pra

que seja melhor entendido:

          synchronized(this)
          { 
           if( cont == 0 || 

nomeGarçom.equals(endpt.remoteName) )
           { 
            .
            .
            .
            .
            .
           else
           {
            try
            { 
                this.wait();
            }
            catch(InterruptedException e)
            {} 
           } 
          }
        }else if ( signal == 

NetLayer.SIGNAL_TERMINATE_SEND_PEDIDO ) 
        {
          synchronized(this)
          { 
           this.notifyAll();
          } 

Vou explicar de novo ,um pouco mais detalhado :

Quando acontece a primeira instância dessa classe(um

dispositivo cliente que mandou uma mensagem pra esse

dispositivo (servidor)) ele entra dentro do bloco do "if(

cont == 0 || nomeGarçom.equals …" .Então só esse

dispositivo cliente passa a ter acesso ao servidor.
Quando um outro dispositivo cliente quer ter acesso a esse

servidor , ele não conseque, então ele cai no bloco do "

this.wait();" e fica na espera .
O problema está aí: quando o primeiro dispositivo cliente

acaba seu trabalho e chama o “this.notifyAll();” ele não

desbloqueia ninguém, porque o segundo dispositivo está numa

outra instância da classe Reader (a classe Reader é criada

pra cada dispositivo cliente,pois não tem como atender a

mais de um cliente somente com uma instância de Reader. Tem

que ser uma instância de Reader pra cada cliente), então o

segundo dispositivo vai adormecer pra sempre, pois não tem

ninguém que o acorde … O problema é esse …

Então eu pensei numa solução, mas não sei se isso é

possível:

Tem como eu ter um controle de todas as instâncias dessa

minha classe Reader?
Porque se eu tiver um controle de todas as instâncias , eu

posso chamar o método .notifyAll(); na instância que chamou

o método .wait(), tem como eu ter esse controle?

Por favor, se puderem me ajudar, porque já estava tendo

problema com isso, mas o mais importante eu já descobri: o

problema, pois nem o problema eu sabia qual era, agora,

estou em um outro assunto: a solução pra isso. Por favor, se

puderem me ajudar …

Grato,

Raphael.