ATPS – Programação Concorrente
Seminário: ATPS – Programação Concorrente. Pesquise 861.000+ trabalhos acadêmicosPor: crystyanno • 4/4/2014 • Seminário • 1.134 Palavras (5 Páginas) • 287 Visualizações
|FACULDADE ANHANGUERA EDUCACIONAL
UNIDADE II - CAMPINAS |
CIÊNCIA DA COMPUTAÇÃO – 6º SEMESTRE
ATPS – Programação Concorrente
Campinas, SP
2012
RELATÓRIO ETAPA - 1
Código fonte desenvolvido para a etapa 1, passos 1, 2, 3 e 4 da ATPS de Programação Concorrente.
Classe nomeada como Principal
package atpsEtapa1;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Principal extends Thread{
static List lista = new ArrayList();
@Override
public void run(){
while(!lista.isEmpty()){
Numero pedido = 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));
}
//marca o início do tempo de execução
long inicio = System.nanoTime() / 1000000;
//quantidade de threads a serem criadas, conforme especificar
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();
}
//imprimi o tempo final do processo
long fim = System.nanoTime() / 1000000;
System.out.println("Tempo Total Processado: " + (fim - inicio) + " ms");
}
}
Classe nomeada como Número
package atpsEtapa1;
public class Numero {
private int valor;
private String nome;
Numero(int valor, String nome) {
this.setValor(valor);
this.setNome(nome);
}
public void setValor(int valor) {
this.valor = valor;
}
public int getValor() {
return valor;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getNome() {
return nome;
}
}
Tabelas comparativas, quantidades de Threads e seus tempos de processamento.
| |1 Thread |minutos |10 Threads |minutos |
| |5039747 |83,9 |501000 |8,3 |
| |5026842 |83,7 |501016 |8,3 |
| |5000718 |83,3 |501123 |8,3 |
| |5000016 |83,3 |501238 |8,3 |
| |5000015 |83,3 |501170 |8,3 |
| |5006750 |83,4 |501104 |8,3 |
| |5004068 |83,4 |500032 |8,3 |
| |5001032 |83,3 |501030 |8,3 |
| |5027081 |83,7 |501047 |8,3 |
| |5038652 |83,9 |501132 |8,3 |
| |
|média tempo em milisegundos |5014492 | |500989 | |
|média tempo em minutos |83,52 | |8,30 | |
| |50 Threads |minutos |100 Threads |minutos |
| |101499 |1,6 |51764 |0,8 |
| |101925 |1,6 |51769 |0,8 |
| |101015 |1,6 |50765 |0,8 |
| |101403 |1,6 |51760 |0,8 |
| |101046 |1,6 |51772 |0,8 |
| |101013 |1,6 |50789 |0,8 |
| |101016 |1,6 |50780 |0,8 |
| |101035 |1,6 |51761 |0,8 |
...