ATPS programa o concorrente
Código fonte elaborado e desenvolvido para os passos 1, 2, 3 e 4 da etapa 1, da ATPS de Programação Concorrente.
Classe Principal
package atpsEtapa1;
/**
* * @author rodrigo.aparecido */
import java.util.List; import java.util.logging.Logger; import java.util.ArrayList; import java.util.logging.Level;
public class Principal extends Thread {
static List lista = new ArrayList();
@Override public void run() { while (!lista.isEmpty()) { Numero pedido = (Numero) lista.get(0); lista.remove(pedido); try { sleep(1000); System.out.println(Thread.currentThread().getName() + " - " + pedido.getValor() + " valor consumido"); } catch (InterruptedException m) { Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, m); } } }
public static void main(String[] args) throws InterruptedException {
for (int i = 0; i < 5000; i++) { lista.add(new Numero(i, "descricao " + i)); }
// início do tempo de execução long inicio = System.nanoTime() / 1000000;
//quantidade das threads a serem criadas; conforme for especificado Principal[] threads = new Principal[500]; for (int i = 0; i < threads.length; i++) { threads[i] = new Principal(); threads[i].setName("Thread: " + i); threads[i].start(); } for (int i = 0; i < threads.length; i++) { threads[i].join(); }
//imprimir tempo final do processo long fim = System.nanoTime() / 1000000; System.out.println("Tempo Total Processado: " + (fim - inicio) + " ms"); }//Impimir
}
Classe Número
package atpsEtapa1;
/**
* * @author rodrigo.aparecido */
public class Numero {
private int valor; //valor private String nome; //nome
Numero(int valor, String nome) { this.setValor(valor);