Você está na página 1de 13

Faculdade Anhanguera Indaiatuba

Programao Concorrente

Cdigo Fonte Etapa 1


//classe pedido onde inicializa um numero
public class Pedido {
//declara varivel n para um numero
private int n;

public Pedido(int n) {
this.n = n;}
// mtodo get pega e retorna o n
public int getNumero() {
return n;}
// mtodo que seta o valor de n
public void setNumero(int n) {
this.n = n }
}
//classe buffer com quantidade de vetor especifico
Public class BufferLimitado {
//declarao de vetor do buffer
private Pedido pedidos[] = new Pedido[5000];
private int Escrita = 0;
private int Leitura = 0;
//mtodo com looping para o buffer
private void inicioBufferLimitado5000(){
for (int i = 0; i < 5000; i++) {
addPedido(new Pedido(i));
}
}
public void addPedido(Pedido pedido) {
pedidos[Escrita] = pedido;
Escrita++;
}
// condio para a leitura e escrita com o retorno
public Pedido getPedido() {
if (Leitura <= Escrita) {
return pedidos[Leitura];
}
return null;
}
}
Import java.text.SimpleDateFormat;
//classe log para o preenchimento e identificao de trhead
public class Log {
// variveis do log
private SimpleDateFormat date = new SimpleDateFormat("hh:MM:ss.S");
private long inicio;
private long init;
private int pedido;
public Log(long inicio, long init, int pedido) {
this.inicio = inicio;
this.init = init;
this.pedido = pedido;
}
@Override
public String toString() {
return String.format("comeo %s final %s soma %d pedido %d",
date.format(inicio),
date.format(final), (final - inicio), pedido);

}
}
Import java.text.SimpleDateFormat;
//classe que possui o mtodo main para execuo
public class Executa {
public static void main(String[] args) {
Log logs[] = new Log[5000];
long inicio = System.currentTimeMillis();
//metodo try e catch para parada e interrupo de execeo
try {
Thread.sleep(10000);
} catch (InterruptedException ex) {
Logger.getLogger(Executa.class.getName())
.log(Level.SEVERE, null, ex);
}
long final = System.currentTimeMillis();
Log log = new Log(inicio, init, 5000);
System.out.println(log);
}
}
// execuo 1 trhead
public class thread1 extends Thread {
private String mensagem;
private int tempo;
public thread1(String mensagem, int tempo) {
this.mensagem = mensagem;
this.tempo = tempo;
}
public void run() {
for (int i = 0; i < 10; i++)
{
try {
}
catch(Exception e) {
}
System.out.println(mensagem + ", contando: " + i);
}
}
}
public class Multiplasthreds {
public static void main(String[] args) {
thread1 c1 = new thread1("thread", 1000);
c1.start();try {
}catch (Exception e) {
}System.out.println("Fim.")
}
}

//Execuo 10 trheads
public class thread10 extends Thread {
private String mensagem;
private int tempo;
public thread10(String mensagem, int tempo) {
this.mensagem = mensagem;
this.tempo = tempo;
}
public void run() {
for (int i = 0; i < 10; i++)
{ try {
}catch(Exception e) {
}
System.out.println(mensagem + ", contando: " + i);
}
}
}public class Multiplasthreads {
public static void main(String[] args) {
for (cont = 0;cont <10;cont++) {
thread10c[cont] = new thread10("thread [cont]", 1000);
C[cont].start();
}try {
}catch (Exception e) {
}System.out.println("Fim.")
}
}
//Execuo 50 threads
public class thread50 extends Thread {
private String mensagem;
private int tempo;
public thread50(String mensagem, int tempo) {
this.mensagem = mensagem;
this.tempo = tempo;
}
public void run() {
for (int i = 0; i < 10; i++)
{ try {
}catch(Exception e) {
}System.out.println(mensagem + ", contando: " + i);
}
}
}
public class Multiplasthread {
public static void main(String[] args) {
for (cont = 0;cont <50;cont++) {
thread50 c[cont] = new thread50("thread [cont]", 1000);
C[cont].start();
}try {
}catch (Exception e) {
}System.out.println("Fim.")
{{

//Execuo 100 threads


public class thread100 extends Thread {
private String mensagem;
private int tempo;
public thread100(String mensagem, int tempo) {
this.mensagem = mensagem;
this.tempo = tempo;
}
public void run() {
for (int i = 0; i < 10; i++)
{ try {
}catch(Exception e) {
}System.out.println(mensagem + ", contando: " + i);
}
}
}
public class Multiplasthreads {
public static void main(String[] args) {
for (cont = 0;cont <100;cont++) {
thread100 c[cont] = new thread100("thread [cont]", 1000);
C[cont].start();
}try {
}catch (Exception e) {
}System.out.println("Fim.");}}
//Execuo 500 threads
public class thread500 extends Thread {
private String mensagem;
private int tempo;
public thread500(String mensagem, int tempo) {
this.mensagem = mensagem;
this.tempo = tempo;
}
public void run() {f
or (int i = 0; i < 10; i++)
{ try {
}catch(Exception e) {
}
System.out.println(mensagem + ",contando: " + i);
}
}
}
public class Multiplasthreads {
public static void main(String[] args) {
for (cont = 0;cont <500;cont++)
{
Thread500 c[cont] = new thread500("thread [cont]", 1000);
C[cont].start();
}try {
}catch (Exception e) {

}System.out.println("Fim.");
}
}
//Execuo 1000 threads
public class thread1000 extends Thread {
private String mensagem;
private int tempo;
public thread1000(String mensagem, int tempo) {
this.mensagem = mensagem;
this.tempo = tempo;
}
public void run() {
for (int i = 0; i < 10; i++){
try {
}catch(Exception e) {
}
System.out.println(mensagem + ", contando: " + i);
}
}
}
public class Multiplasthreads {
public static void main(String[] args) {
for (cont = 0;cont <1000;cont++) {
thread1000 c[cont] = new thread1000 ("thread[cont]", 1000);
C[cont].start();
}try {
}catch (Exception e) {
}
System.out.println("Fim.");}

Tempos gerados pelo java


quantidade | Execuo 1 | | Execuo 2 | | Execuo 3 | | Execuo 4 | |
Threads | inicio | fim | inicio | fim | inicio | fim | inicio | fim |
1 | 11:09:34.110 | 11:09:44.111 | 11:09:33.100 | 11:09:43.110 | 11:09:07.011 | 11:09:17.111
| 11:09:44.199 | 11:09:54.199 |
10 | 11:10:01.019 | 11:10:09.112 | 11:10:15.269 | 11:10:25.269 | 11:10:54.361 |
11:10:06.361 | 11:10:57.686 | 11:10:06.686 |

50 | 11:10:13.190 | 11:10:20.199 | 11:10:12.632 | 11:10:21.631 | 11:10:24.481 |


11:10:33.480 | 11:10:17.976 | 11:10:26.976 |
500 | 11:10:27.150 | 11:10:35.150 | 11:10:36.300 | 11:10:45.299 | 11:10:48.561 |
11:10:57.561 | 11:10:37.952 | 11:10:46.952 |
1000 | 11:11:34.020 | 11:11:42.019 | 11:10:35.258 | 11:10:34.249 | 11:10:01.111|
11:10:10.111 | 11:10:14.419 | 11:10:22.111 |
Execuo 5 | | Execuo 6 | | Execuo 7 | | Execuo 8 | |
inicio | fim | inicio | fim | inicio | fim | inicio | fim |
11:09:07.177 | 11:09:17.176 | 11:09:34.110 | 11:09:44.111 | 11:09:10.101 | 11:09:19.110 |
11:09:14.131 | 11:09:23.121 |
11:10:51.019 | 11:10:00.192 | 11:10:18.385 | 11:10:27.385 | 11:10:54.999 | 11:10:05.999 |
11:10:47.786 | 11:10:57.786 |
11:10:01.598 | 11:10:09.598 | 11:10:51.869 | 11:10:01.869 | 11:10:33.461 | 11:10:42.461 |
11:10:28.981 | 11:10:37.981 |
11:10:21.019 | 11:10:30.112 | 11:10:14.475 | 11:10:24.475 | 11:10:24.335 | 11:10:32.335 |
11:10:42.632 | 11:10:51.632 |
11:10:12.181 | 11:10:21.811 | 11:10:37.113 | 11:10:45.113 | 11:10:25.632 | 11:10:33.632 |
11:10:36.411 | 11:10:44.411 |
quantidade |
Threads |
1|
10 |
50 |
500 |
1000 |
Execuo 9 | | Execuo 10 |
inicio | fim | inicio | fim |
11:09:08.100 | 11:09:09.101 |
11:10:51.919 | 11:10:01.919 |
11:10:01.258 | 11:10:09.258 |
11:10:08.021 | 11:10:16.121 |
11:10:26.331 | 11:10:34.331 |
quantidade |
Threads |
1|
10 |
50 |
500 |
1000 |

|
11:09:43.111
11:10:18.308
11:10:13.769
11:10:48.651
11:10:59.285

|
|
|
|
|

11:09:44.111
11:10:27.308
11:10:22.769
11:10:57.651
11:10:08.285

|
|
|
|
|

Tempos gerados por c


quantidade | Execuo 1 | | Execuo 2 | | Execuo 3 | | Execuo 4 | |
Threads | inicio | fim | inicio | fim | inicio | fim | inicio | fim |
1 | 12:09:07.011 | 12:09:16.011 | 12:09:44.199 | 12:09:53.199 | 12:09:07.177 | 12:09:16.176
| 12:09:34.110 | 12:09:43.111 |
10 | 12:09:54.361 | 12:09:02.361 | 12:09:57.686 |12:09:04.686 | 12:09:51.019 | 12:09:00.192
| 12:09:18.385 | 12:09:27.385 |

50 | 12:09:24.481 | 12:09:32.480 | 12:09:17.976 | 12:09:25.976 | 12:09:01.598 |


12:09:08.598 | 12:09:51.869 | 12:09:00.869 |
500 | 12:09:48.561 | 12:09:57.561 | 12:09:37.952 | 12:09:46.952 | 12:09:21.019 |
12:09:30.112 | 12:09:14.475 | 12:09:24.475 |
1000 | 12:09:01.111 | 12:09:10.111 | 12:09:14.419 | 12:09:22.111 | 12:09:12.181 |
12:09:21.811 | 12:09:37.113 | 12:09:45.113 |

quantidade |Execuo 5 | | Execuo 6 | | Execuo 7 | | Execuo 8 | |


Threads |inicio | fim | inicio | fim | inicio | fim | inicio | fim |
12:09:12.101 | 12:09:19.110 | 12:09:14.131 | 12:09:22.121 | 12:09:08.100 | 12:09:16.101 |
12:09:43.111 | 12:09:52111 |
1 |12:09:54.999 | 12:09:05.999 | 12:09:47.786 | 12:09:57.786 | 12:09:51.919 | 12:09:01.919 |
12:09:18.308 | 12:10:27.308 |
10 |12:09:33.461 | 12:09:41.461 | 12:09:28.981 | 12:09:36.981 | 12:09:01.258 | 12:09:08.258
| 12:09:13.769 | 12:09:21.769 |
50 |12:09:24.335 | 12:09:32.335 | 12:09:42.632 | 12:09:51.632 | 12:09:08.021 | 12:09:16.121
| 12:09:48.651 | 12:09:57.651 |
1000 |12:09:25.632 | 12:09:33.632 | 12:09:36.411 | 12:09:44.411 | 12:09:26.331 |
12:09:34.331 | 12:09:59.285 | 12:09:08.285 |

quantidade | Execuo 9 | | Execuo 10 | |


Trheads | inicio | fim | inicio | fim |
1 | 12:09:34.110 | 12:09:43.111 | 12:09:33.100 | 12:09:42.110 |
10 | 12:09:01.019 | 12:09:09.112 | 12:09:15.269 | 12:09:25.269 |
50 | 12:09:13.190 | 12:09:20.199 | 12:09:12.632 | 12:09:20.631 |
500 | 12:09:27.150 | 12:09:35.150 | 12:09:36.300 | 12:09:45.299 |1000 | 12:09:34.020 |
12:09:42.019 | 12:09:35.258 | 12:09:34.249 |
segundos
10
09
08
07
06
05
04
03
02
01
00 trheads
1 10 50 500 1000
quantidade | Execuo 1 | Execuo 2 | Execuo 3 | Execuo 4 | Execuo 5 | Execuo 6 |
Threads | quant.pedido | quant.pedido | quant.pedido | quant.pedido | quant.pedido |

quant.pedido |
1 | 10 | 10 | 9 | 12 | 10 | 10 |
10 | 1285 | 1325 | 1366 | 1384 | 1623 | 1264 |
50 | 1573 | 1459 | 1667 | 1562 | 1306 | 1475 |
500 | 124753 | 123692 | 118913 | 110266 | 128742 | 128741 |
1000 | 512022 | 521478 | 512658 | 526854 | 535285 | 514748 |

quantidade | Execuo 7 | Execuo 8 | Execuo 9 | Execuo 10 | | |


Threads | quant.pedido | quant.pedido | quant.pedido | quant.pedido | mdia de pedido |
mdia de quant p/ seg |
1 | 9 | 9 | 12 | 12 | 10 | 10 |
10 | 1273 | 1317 | 1246 | 1320 | 1280 | 99 |
50 | 1498 | 1582 | 1623 | 1632 | 1560 | 118 |
500 | 112489 | 119857 | 126852 | 117896 | 118902 | 1981,7 |
1000 | 562874 | 510002 | 514587 | 512479 | 515028 | 8583,8 |
Tempo
10000
9000
8000
7000
6000
5000
4000
3000
2000
1000
500
100
1 10 50 500 1000 threads
1 10 50 100 500 1000 threads

Cdigo Fonte Etapa 2


public interface Buffer {
private Pedido pedidos[] = new Pedido[5000];
private int posicaoEscrita = 0;
private int posicaoLeitura = 0;

private void initBuffer5000(){


for (int i = 0; i < 5000; i++) {
addPedido(new Pedido(i));
}
}
public void addPedido(Pedido pedido) {
pedidos[posicaoEscrita] = pedido;
posicaoEscrita++;
}
public Pedido getPedido() {
if (posicaoLeitura <= posicaoEscrita) {
return pedidos[posicaoLeitura];
}
return null;
public void set(int value);
public int get();
}
public class Consumer implements Runnable{
private static Random generator = new Random();
private Buffer sharedLocation;
public Consumer(Buffer shared)
{
sharedLocation = shared;
}

@Override
public void run() {
int num = 0;
for (int count = 1; count <= 5000; count++ )
{
try
{
Thread.sleep(generator.nextInt( 3000 ));
num += sharedLocation.get();
System.out.printf("\t\t\t%d\n", num);
}
catch( InterruptedException exception )
{
exception.printStackTrace();
}
} //fim for
System.out.printf("\n%s %d.\n%s\n", "Total lido pelo consumidor", sum,
"Consumidor acbou.");
public class Producer implements Runnable {
private static Random generator = new Random();

private Buffer sharedLocation;


public Producer(Buffer shared)
{
sharedLocation = shared;
}
@Override
public void run() {
int num = 0;
for(int count = 1; count <= 10; count ++)
{
try
{
Thread.sleep( generator.nextInt( 5000 ));
sharedLocation.set( count );
sum += count;
System.out.printf("\t%2d\n", sum);
}
catch( InterruptedException exception )
{
exception.printStackTrace();
}
}
System.out.printf("\n%s\n%s\n", "Fim ",
"Produtor ");
}
}
public class Unsynchorized implements Buffer{
private int buffer = -1;

public void set(int value) {


System.out.printf("Produtor %2d", value);
buffer = value;
}
public int get() {
System.out.printf("consumidor leu %2d", buffer);
return buffer;
}
}
public class log {
private SimpleDateFormat date = new SimpleDateFormat("hh:MM:ss.S");
private long inicio;
private long init;
private int pedido;

public void Log(long inicio, long init, int pedido) {


this.inicio = inicio;
this.init = init;
this.pedido = pedido;
}
@Override
public String toString() {
return String.format("comeo %s final %s soma %d pedido %d",
date.format(inicio), date.format(init), (init - inicio), pedido);
}
}
public class executa {
public static void main(String[] args) {
log logs[] = new log[5000];
long inicio = System.currentTimeMillis();
try {
Thread.sleep(10000);
} catch (InterruptedException ex) {
Logger.getLogger(executa.class.getName())
.log(Level.SEVERE, null, ex);
}
long init = System.currentTimeMillis();
log log = new log();
System.out.println(log);
}
}

quantidade | Execuo 1 | Execuo 2 | Execuo 3 | Execuo 4 | Execuo 5 | Execuo 6 |


Threads | quant.pedido | quant.pedido | quant.pedido | quant.pedido | quant.pedido | quant.pedido |
1 | 10 | 10 | 9 | 12 | 10 | 10 |
10 | 1285 | 1325 | 1366 | 1384 | 1623 | 1264 |
50 | 1573 | 1459 | 1667 | 1562 | 1306 | 1475 |
500 | 124753 | 123692 | 118913 | 110266 | 128742 | 128741 |
1000 | 512022 | 521478 | 512658 | 526854 | 535285 | 514748 |
quantidade | Execuo 7 | Execuo 8 | Execuo 9 | Execuo 10 | | |
Threads | quant.pedido | quant.pedido | quant.pedido | quant.pedido | mdia de pedido | mdia de quant p/
seg |
1 | 9 | 9 | 12 | 12 | 10 | 10 |
10 | 1273 | 1317 | 1246 | 1320 | 1280 | 99 |
50 | 1498 | 1582 | 1623 | 1632 | 1560 | 118 |

500 | 112489 | 119857 | 126852 | 117896 | 118902 | 1981,7 |


1000 | 562874 | 510002 | 514587 | 512479 | 515028 | 8583,8 |
Tempo
10000
9000
8000
7000
6000
5000
4000
3000
2000
1000
500
100
1 10 50 500 1000 threads
1 10 50 100 500 1000 threads

Você também pode gostar