1) una collection di tipo "map" non e' altro che un array associativo che, appunto, associa due oggetti tra loro: una chiave e il suo valore corrispondente.
http://java.sun.com/j2se/1.5.0/docs/.../util/Map.html

2) la soluzione che hai proposto puo' funzionare ma io piuttosto che fare check continui sul lock farei magari
codice:
if (comando.equals("A"))
        {
    String nomeFile = ....; //il client deve dirti quale file vuole andare a vedere
    while(MagServer.fileLock.get(nomeFile))
    {
        Thread.sleep(1000);
    }//loop finchè non diventa false questo sopra
    //qui c'è il codice di lettura del file pippo.txt e poi invierà il contenuto al client

        }
in modo che il controllo sul lock venga fatto solo ogni secondo (o mezzo secondo, o quanto vuoi tu..)

3) non conoscendo a fondo il funzionamento dell'applicazione non saprei consigliarti sul momento migliore per farlo... Quella che proponi mi sembra cmq un'idea che potrebbe funzionare