Thread + Estrutura Sincronizada/Bloqueante

Olá tenho o seguinte código:

public class SyncStruct extends Thread {


BlockingQueue<Integer> jobsList;

public SyncStruct() {
  josbList = new LinkedBlockingQueue<Integer>;

}

public void run() {
   valor = jobsList.take();

   Thread.sleep(10)
   System.out.println("Recebi: " + valor);
  ....
}

public void receive(int valor) {
   System.out.println("Adicionar: " + valor);
  jobsList.put(valor);
}
}

public class main() {

  public static void main(String args[]) {
      public SyncStruct sinc = new SyncStruct();
      for (int i=0; i< 10; i++) {
          sinc.receive(++i*2);
     }
}
}

Basicamente é isso que tenho. Minha dúvida é que a mensagem “Adicionar” esta sendo impressa somente após a recebi for impressa também. Qual o problema? Outra dúvida é que se a lista jobsList é bloqueante depois do take, ou seja, ela bloqueia não deixa eu adicionar nada nela até que o metodo run() executou o que tinha para executar?

Abraço.