Faculdade de Negócios e Tecnologias da Informação Bacharelado em Sistemas de Informação
Por: ellioenay • 5/10/2015 • Trabalho acadêmico • 686 Palavras (3 Páginas) • 415 Visualizações
[pic 1]
Anhanguera Educacional
Faculdade de Negócios e Tecnologias da Informação
Bacharelado em Sistemas de Informação
ATPS Programação Concorrente
Disciplina: Programação Concorrente
Professor: Wesley Tschiedel
Semestre: 7º
Turma: B
RA: 4252066252 – Lucas Henrique
RA: 3715665498 – Ellioenay Almeida de Oliveira
RA: 4242847983 – Melquesedeque O.Santana
RA: 3725698285 - Pedro Henrique das chagas
RA: 5643117331 – Pedro Paulo Correia Martins
RELATÓRIO ETAPA – 3
Código fonte:
1.
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
@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));
}
// início do tempo de execução
long inicio = System.nanoTime() / 1000000;
// 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();
}
// tempo final do processo
long fim = System.nanoTime() / 1000000;
System.out.println("Tempo Total: " + (fim - inicio) + " ms");
}
}
2.
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
101010 1,6 50783 0,8
101043 1,6 50757 0,8
média tempo em milisegundos 101201 51270
média tempo em minutos 1,60 0,80
500 Threads minutos 1000 Threads minutos
11001 0,1 6002 0,1
10244 0,1 6089 0,1
10228 0,1 5309 0,08
11005 0,1 5278 0,08
10228 0,1 5393 0,08
11005 0,1 5309 0,08
10224 0,1 5293 0,08
11003 0,1 6104 0,1
10243 0,1 5310 0,08
11004 0,1 6008 0,1
média tempo em milisegundos 10619 5610
média tempo em minutos 0,10 0,09
RELATÓRIO ETAPA - 4
Código fonte:
1.
import java.util.ArrayList;
import java.util.List;
public class classePrincipal extends Thread{
static List
public static void main(String[] args) throws InterruptedException {
//Imprimir tempo final
long inicio = System.nanoTime() / 1000000;
//instanciando as Threads Consumidora e Produtora
classeConsumidor[] threadConsumidora = new classeConsumidor[1000];
classeProdutor[] treadProdutora = new classeProdutor[1000];
//for para executar as Threads "x" quantidades de vezes, conforme solicitado
int cont = 0;
for(int m = 0; m < 10; m++){
//iniciando as Threads
for (int i = 0; i < threadConsumidora.length; i++) {
threadConsumidora[i] = new classeConsumidor();
threadConsumidora[i].setName("Thread Consumidor: " + i);
...