Duvida com Thread

Olá uma duvida

como poderia fazer para listar o que ficou na lista apos a thread executada…
pois o resultado abaixo mostra o readList() depois a thread…

gostaria que saisse assim :
true
false
false
mostra=Ozymandias2
mostra=Ozymandias3
mostra=Ozymandias4
mostra=Ozymandias5
mostra=Ozymandias6
mostra=Ozymandias7
mostra=Ozymandias8
mostra=Ozymandias9
mostra=Ozymandias10
mostra=Ozymandias11
mostra=Ozymandias12


se alguém puder me ajudar ....

abs
public class NameList1 {

	public static void main(String[] args) {
	    final NameList n1 = new NameList();
	    n1.add("Ozymandias1");
	    n1.add("Ozymandias2");
	    n1.add("Ozymandias3");
	    n1.add("Ozymandias4");
	    n1.add("Ozymandias5");
	    n1.add("Ozymandias6");
	    n1.add("Ozymandias7");
	    n1.add("Ozymandias8");
	    n1.add("Ozymandias9");
	    n1.add("Ozymandias10");
	    n1.add("Ozymandias11");
	    n1.add("Ozymandias12");
	    class NameDropper extends Thread {
	        public void run() {
	            String name = n1.removeFirst("Ozymandias1");
	            System.out.println(name);
	        }
	    }
	    Thread t1 = new NameDropper();
	    Thread t2 = new NameDropper();
	    Thread t3 = new NameDropper();
	    
	    t1.start();
	    t2.start();
	    t3.start();
	    n1.readLista();
	}

}
resultado:

mostra=Ozymandias1
mostra=Ozymandias2
mostra=Ozymandias3
mostra=Ozymandias4
mostra=Ozymandias5
mostra=Ozymandias6
mostra=Ozymandias7
mostra=Ozymandias8
mostra=Ozymandias9
mostra=Ozymandias10
mostra=Ozymandias11
mostra=Ozymandias12
true
false
false

----

public class NameList {
    private List names = Collections.synchronizedList(
                                           new LinkedList());
    public void add(String name) {
        names.add(name);
        
    }
    public String removeFirst(String nome) {
        if (names.size() > 0)
            //return (String) names.remove(0);
            return ""+names.remove(nome);
        else
            return null;

    }
    
    public void readLista(){
    	for (Object s : names) {
			System.out.println("mostra="+(String)s);
		}
    }
    public static void main (String[] args){
    	
    	NameList n = new NameList();
    	n.add("Paulo");
    	n.add("Cristina");
    	n.add("Pai");
    	n.add("mãe");
    	n.add("Thais");
    	n.add("Paula");
    	System.out.println("*****Lendo*****");
    	n.readLista();
    	String remove =n.removeFirst("Pai");
    	System.out.println("Valor da remoção="+remove);
    	System.out.println("*****Lendo*****");
    	n.readLista();
    	
    }
}

Você precisa esperar por cada thread usando “join”. Exemplo:

t1.join(); t2.join(); t3.join(); n1.readLista();

obrigado…valeu