São acordadas 10 threads quando o Cliente faz a ligação ao servidor, quando o Cliente pede uma palavra, O servidor acorda estas threads e estas vao percorrer uma lista de tarefas.
O que queria que acontecesse: sempre que uma thread faz o scan() dessa palavra, retirasse essa tarefa da lista de maneira que quando a proxima corresse essa tarefa já nao estivesse na lista.
O que acontece: mais que uma thread começa a fazer o scan(), e fazem todas o scan() da primeira tarefa.
public class ThreadSearcher extends Thread{ private int x; public ThreadSearcher(int x){ this.x=x; } @Override public void run(){ while(!interrupted()){ System.out.println("Comecei a correr:" + x); try { Tarefa t = getTarefas().get(0); scan(t); System.out.println("Sou a "+ this.x + " e fiz o scan de " + t.getStart() + "a" + t.getFinish()); System.out.println("Sou a " + x + "antes de remover tinha " + tarefas.size()); tarefas.remove(t); System.out.println("Sou a " + x + "depois de remover tinha " + tarefas.size()); System.out.println("removi a" + t); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }