Threads bloqueadas indefinidamente, sem synch e com CopyOnWriteArrayList, detectado no TPTP

Salve Galera,

Estou esboçando uma aplicação com várias threads concorrentes, comandadas por um Singleton. Fui fazer um profiling no meu programa usando o TPTP e descobri que algumas threads estão sendo bloqueadas, e não faço a menor idéia do porquê.

Segue trecho de código do Singleton, responsável por gerenciar as threads concorrentes:

	private Queen() {
		workList = new CopyOnWriteArrayList<String>(.......);
		activeWorkers = new CopyOnWriteArrayList<Worker>();
		jobDone = new CopyOnWriteArrayList<String>(.....);
		.
		.
		.
		.
	}

	public void run(){
		for(int i=0; i<CONCURRENT_JOBS; i++) {
			startJob();
		}
	}
	
	private void startJob() {
		if(workList.size()>0) {
			String job = workList.get(0);
			Logger.getInstance().println("Starting job: " + job);
			Worker worker = new Worker(job);
			Thread thread = new Thread(worker);
			thread.setName("_" + job);
			thread.start();
			activeWorkers.add(worker);
			workList.remove(job);
		} else {
			if(activeWorkers.size() + haltedWorkers.size() == 0){
				Logger.getInstance().println("Queen Job Done");
				WorkStatusManager.getInstance().removeFiles();
				jobFinished = true;
			}
		}
	}
	
	protected void jobDone(Worker workDone) {
		Logger.getInstance().println("Job Done: " + workDone.getWork());
		jobDone.add(workDone.getWork());
		activeWorkers.remove(workDone);
		startJob();
	}

Quando uma Thread worker termina, ela invoca o método jobDone do singleton. No ThreadProfiler do TPTP, eu vejo umas 4-5 threads (o total varia em cada execução) bloqueadas, com a seguinte info:

Thread Name: _AS 
Call Stack: logic.Worker.run(void()) line : 39
Blocked by Thread _IK

A thread _IK é mostrada como running, sem Call Stack. Não entendo muito de TPTP, então posso ter entendido errado a informação, mas o código que eu descrevi acima pode causar bloqueio indeterminado das minhas Threads Worker? As 4-5 que mencionei nunca saem do estado Blocked.

Obrigado a todos!