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.