chatRMI

514 palavras 3 páginas
Exerc´ıcios Pr´ aticos Sistemas Distribu´ıdos

i

Threads em Java
Unidade Curricular: Sistemas Distribu´ıdos
Ano:
3o
Data:
23/9/2014

Cria¸ c˜ ao de Threads
1. Crie um programa em Java que execute num thread independente um contador at´e
1000. Cada incremento deve ocorrer com um intervalo de 10 ms.
(a) Qual ´e o u
´ltimo valor impresso no ecran?
(b) De modo a que a classe principal herde da class java.lang.Thread
(c) De modo a que a classe principal implemente a interface java.lang.Runnable
2. Modifique o programa anterior para que o contador seja implementado numa classe espec´ıfica, denominada Counter: p u b l i c c l a s s Counter { int i = 0; public void inc ( ) { i ++;
}
public int getI () { return i ;
}
}
Adicionalmente, deve existir uma classe Incrementer e outra Main.

Race Condition
3. Crie mais um thread contador, em paralelo com o anterior. Ambos devem usar o mesmo Counter.
(a) Que valor deveria aparecer no ecran no final?
(b) que valor ´e efetivamente impresso no final?
(c) Fa¸ca uma tabela que ilustre o que ocorre quando se executa o programa.
(d) Como corrigir este “bug”?
4. Altere o programa para que este problema n˜ao ocorra.

Coordena¸ c˜ ao
5. Considere as seguintes classes:

c 2014 - Rui Pedro Lopes

1

Engenharia Inform´atica

2014/2015

Runnable

Main acc: Accumulator gen: ParcelGenerator viewer: SumViewer main(): void

ParcelGenerator acc: Accumulator run(): void
*
Accumulator 1 nums: int[2]
1
n: int getSum(): int out(int): void

SumViewer acc: Accumulator run(): void

*

(a) A classe Accumulator ´e respons´avel por armazenar as parcelas e devolver a soma correspondente. (b) A classe ParcelGenerator deve ter um ciclo infinito para gerar parcelas (uma de cada vez).
(c) A classe SumViewer deve ter um ciclo infinito para mostrar no ecran o resultado da soma.
(d) Como referˆencia, pode ser tido em considera¸ca˜o o seguinte diagrama de sequˆencia:
Main

Relacionados