Lista Bloqueante

olá, estou com um problema em uma lista bloqueante e não estou conseguindo entender o porque.

package core;

import interfaces.*;

import com.*;

import java.nio.ByteBuffer;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;

import proxy.*;
import util.*;

public class Worker extends Thread implements InterfaceWorker {

	public Worker(String Id) {
		try {

			this.jobsList = new LinkedBlockingQueue<InterfaceJob>();

			this.start();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void run() {
		while (true) {
			try {
				try {
					job = jobsList.take();
					this.workerWorkload -= job.getWorkload();
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

				// Resolve o job
				job.solve();

			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

	public void newJob(String jobId, byte[] jobDescription) {
		try {
			InterfaceJob job = new Fibo(jobDescription);
			this.workerWorkload += job.getWorkload();
			job.setID(jobId);
			jobsList.put(job);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}


public class Job () {
 ....
}

Existe uma classe main que instancia essa worker e nela possui um for que fica enviando, chamando o metodo newJob. O correto seria que essa fila ficasse sempre recebendo jobs, mas isso não esta acontecendo, ela somente recebe um novo job quando o que esta dentro do run() executa. Minha pergunta é se essa blocking queue bloqueia após o take e não deixa adicionar mais nada dentro dela.

Pensei que ela bloqueasse somente se não existir mais valores dentro dessa fila.