Estou iniciando meus estudos sobre threads em java, e estou tentando desenvolver um código que gere números aleatórios, os insira em uma fila utilizando ConcurrentLinkedQueue, e então vá exibindo um por um usando uma thread. Porém, ele gera o primeiro número, o adiciona na fila, e não gera um outro número aleatório, somente repete o primeiro.
And here comes the code:
Classe: ClasseGeradora.java
package projetojava.classes;
import java.util.Random;
public class ClasseGeradora {
public static void main(String[] args) {
ClasseDeclaracao classeDeclaracao = new ClasseDeclaracao();
ClasseRecebedora classeRecebedora = new ClasseRecebedora();
Random random = new Random();
classeRecebedora.start();
for(int i=0; i<5; i++) {
classeDeclaracao.setId(random.nextInt(1000));
classeRecebedora.add(classeDeclaracao);
}
}
}
Classe: ClasseRecebedora.java
package projetojava.classes;
import java.util.Iterator;
import java.util.concurrent.ConcurrentLinkedQueue;
public class ClasseRecebedora extends Thread {
private static ConcurrentLinkedQueue<ClasseDeclaracao> fila = new ConcurrentLinkedQueue<ClasseDeclaracao>();
public static void add(ClasseDeclaracao classeDeclaracao) {
fila.add(classeDeclaracao);
}
@Override
public void run() {
System.out.println("FILA IS ONLINE");
Iterator iteracao = fila.iterator();
while (iteracao.hasNext()) {
ClasseDeclaracao processar = (ClasseDeclaracao) iteracao.next();
System.out.println(processar.getId());
iteracao.remove();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Classe: ClasseDeclaracao
package projetojava.classes;
public class ClasseDeclaracao {
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}