Exercício 1
Declare um objeto runnable cujo método
run fica em loop eterno.
Neste loop ele dorme (sleep) por um
segundo e imprime uma mensagem.
No código principal:
Crie uma thread a partir de uma instância deste objeto runnable.
Inicie a thread (start).
O que acontece código principal
se não houverem mais comandos depois do start ?
Exercício 2
A partir da resposta do exercício
1, modifique para fazer com que o código principal
espere o final da thread criada.
Modifique a thread para nao ficar em loop eterno, mas
um número finito de vezes.
Exercício 3
Construa um programa com duas threads
em loop eterno, onde cada thread incrementa um contador interno.
O programa principal, depois de iniciar
as duas threads fica em loop, fazendo sleep de 1
segundo e mostrando o valor das variáveis
das threads.
Execute várias vezes o programa,
atribuindo valores de prioridades diferentes às threads.
Verifique o resultado obtido e se
as prioridades influem no resultado.
Monte uma tabela do tipo:
prioridade
thread 1 prioridade thread 2
valor cont 1(em 10 seg) valor cont 2(em 10 seg)
5
5
4
6
3
7
2
8
1
10
Exercício 4
Vá até esta página,
na seção 2.1 você encontrará um programa com
2 threads que manipulam um contador.
1) Analise o programa e diga qual
comportamento você espera do mesmo.
2) Em um ambiente de programação,
compile o programa ali encontrado.
3) Repita várias vezes a execução
do mesmo. Analise as respostas obtidas.
4) O programa roda sempre da mesma
maneira ?
Explique o
que faz com que o programa se comporte desta maneira.