1. A partir do programa abaixo, faça as seguintes operações:
Programa 1 (Deposito.java)
public class Deposito {
private int items=0;
private final int capacidade=10;
public int retirar() {
if (items>0) {
items–;
System.out.println(“Caixa retirada: Sobram “+items+” caixas”);
return 1; }
return 0;
}
public int colocar () {
if (items<capacidade) {
items++;
System.out.println("Caixa armazenada: Passaram a ser "+items+"caixas");return 1; }
return 0;
}
public static void main(String[] args) {
Deposito dep = new Deposito();
Produtor p = new Produtor(d, 2);
Consumidor c = new Consumidor(d, 1);
//arrancar o produtor
//…
//arrancar o consumidor
//…
System.out.println("Execucao do main da classe Deposito terminada");
}
a) Crie uma classe Deposito com as mesmas instruções contidas no código-fonte acima.
b) Crie uma classe Produtor que funcione como uma thread independente e que vai
invocando o método colocar da classe depósito de forma a acrescentar caixas ao
depósito. A classe Produtor deve receber no construtor uma referência para o objeto dep
onde os métodos vão ser invocados e um inteiro correspondente ao tempo em segundos
entre produções de caixas. Defina a classe Produtor como sendo uma classe que
implementa a interface Runnable.
c) Crie uma classe Consumidor que funcione como uma thread independente e que vai
invocando o método retirar da classe depósito de forma a retirar caixas do depósito. A
classe Consumidor deve receber no construtor uma referência para o objeto dep onde os
métodos vão ser invocados e um inteiro correspondente ao tempo em segundos entre
consumos de caixas. Defina a classe Consumidor como sendo uma extensão da classe
Thread.
d) Indique que motivos poderão levar a que se opte por realizar uma thread através da
implementação da interface Runnable ou como extensão de Thread.
e) Execute o projeto e experimente algumas variantes, como por exemplo:
− Adicione à classe consumidor mensagens que permitam identificar o que cada
objeto Consumidor está fazendo em cada momento, e em particular se está
bloqueado à espera que existam caixas.− Altere o número de consumidores ou de produtores e os tempos médios entre
produções e consumos.
2. Escreva um programa que imprima o tempo decorrido cada segundo após o início da execução,
com outra thread que imprime uma mensagem a cada quinze segundos. Faça a thread de
impressão de mensagens ser notificada pela thread de impressão de tempo à medida que cada
mensagem é passada. Adicione outra thread que imprime uma mensagem diferente a cada
sete segundos, sem modificar a thread de impressão de tempo.
na boa, ngm vai ter paciencia de ler isso tudo ¬¬