TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

ATPS apresentado ao Curso de Ciência da Computação da Instituição Anhanguera.

Por:   •  4/5/2017  •  Projeto de pesquisa  •  1.864 Palavras (8 Páginas)  •  405 Visualizações

Página 1 de 8

[pic 1][pic 2]

[pic 3]

[pic 4]

[pic 5]

Campinas

2017

ERICK KALL GIMENES

LUCAS PERES BARBI

TARSIS CESARIM MENDONÇA

[pic 6]

ATPS apresentado ao Curso de Ciência da Computação da Instituição Anhanguera.
Orientador: Mauricio de Morais.


CAMPINAS

2017


SUMÁRIO


E TAPA №    1

Aula – Tema: Revisão sobre Sistemas Operacionais. Conceitos de Programação Concorrente, Multiprogramação, Threads, Concorrência e Problemas de Programação Concorrente.

Esta atividade é importante para que você utilize os conceitos iniciais vistos em sala de aula para definir qual a melhor linguagem de programação a utilizar e criar os primeiros componentes do protótipo. Serão utilizados conceitos de multiprogramação, Threads e Programação concorrente.

Para realizá-la, é importante seguir os passos descritos.

Quantidade de Threads e seu tempo de execução.

Códigos Fonte

Classe Principal.java

import java.util.ArrayList;

import java.util.List;

public class Principal extends Thread {

// CRIAÇÃO DO BUFFER

static List buffer = new ArrayList();

public static void main(String[] args) throws InterruptedException {

System.out.println("Buffer criado. Iniciando preenchimento do buffer");

// PREENCHENDO BUFFER

for (int i = 0; i < 5000; i++) {

buffer.add(new Pedido(i, "código " + i));

}

System.out.println("Buffer PREENCHIDO");

// PEGA INICIO DO TEMPO

long inicio = System.nanoTime() / 1000000;

// QUANTIDA DE THREADS A SEREM CRIADAS

Principal[] consumidor = new Principal[50];

// CRIAÇÃO DAS THREADS

for (int i = 0; i < consumidor.length; i++) {

consumidor[i] = new Principal();

consumidor[i].setName("Thread: " + i);

consumidor[i].start();

}

for (int i = 0; i < consumidor.length; i++) {

consumidor[i].join();

}

// PEGA FINAL DO TEMPO DE EXECUÇÃO E IMPRIME TEMPO TOTAL DE PROCESSAMENTO

long fim = System.nanoTime() / 1000000;

System.out.println("Tempo Total Processado: " + (fim - inicio) + " ms");

}

Override

public void run() {

while (!buffer.isEmpty()) {

Pedido pedido = (Pedido) buffer.get(0);

buffer.remove(pedido);

try {

sleep(10000);

System.out.println(Thread.currentThread().getName() + " - pedido nº " + pedido.getCodigo() + " consumido");

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

Classe Pedido.java

public class Pedido {

private int codigo;

private String descricao;

Pedido(int codigo, String descricao) {

this.setCodigo(codigo);

this.setDescricao(descricao);

}

public int getCodigo() {

return codigo;

}

public void setCodigo(int codigo) {

this.codigo = codigo;

}

public String getDescricao() {

return descricao;

}

public void setDescricao(String descricao) {

this.descricao = descricao;

}

}

Para exemplificar o log de saída do programa, segue uma amostra da execução do programa com menor quantidade de threads e menor tamanho do buffer.

Buffer criado. Iniciando preenchimento do buffer

Buffer PREENCHIDO

Thread: 1 - pedido nº 1 consumido

Thread: 0 - pedido nº 0 consumido

Thread: 2 - pedido nº 2 consumido

Thread: 3 - pedido nº 3 consumido

Thread: 4 - pedido nº 4 consumido

Thread: 5 - pedido nº 8 consumido

Thread: 9 - pedido nº 8 consumido

Thread: 7 - pedido nº 7 consumido

Thread: 8 - pedido nº 6 consumido

Thread: 6 - pedido nº 5 consumido

Thread: 1 - pedido nº 10 consumido

Thread: 2 - pedido nº 12 consumido

Thread: 0 - pedido nº 11 consumido

Thread: 3 - pedido nº 13 consumido

Thread: 5 - pedido nº 15 consumido

Thread: 9 - pedido nº 16 consumido

Thread: 7 - pedido nº 17 consumido

Thread: 4 - pedido nº 14 consumido

Thread: 6 - pedido nº 19 consumido

Thread: 8 - pedido nº 18 consumido

Tempo Total Processado: 20003 ms

Experimento iniciando 1 threads

public class Canal extends Thread { private String mensagem;

private int atraso;

public Canal(String mensagem, int atraso) { this.mensagem = mensagem;

this.atraso = atraso;

}

public void run() {

for (int i = 0; i < 10; i++) { try {

}

catch(Exception e) {

}

System.out.println(mensagem + ", contando: " + i);

}

}

}

public class MultiplosCanais {

public static void main(String[] args) { Canal c1 = new Canal("Canal 1", 1000); c1.start();

...

Baixar como (para membros premium)  txt (16.2 Kb)   pdf (284.9 Kb)   docx (439.5 Kb)  
Continuar por mais 7 páginas »
Disponível apenas no TrabalhosGratuitos.com