:eek:
Preciso resolver um problema no qual duas threads (servidora e cliente) fazem o seguinte:
Desenvolver um programa que utilize threads para acessarem uma região compartilhada por ambas.
A primeira thread deve escrever nesta região a string “abcde”, e então entrar em loop verificando o primeiro elemento desta string (o caractere “a”). Quando este elemento se tornar em um caractere “*”, então esta thread terminará. Uma mensagem de finalização (“Fim da thread servidora”) deverá ser emitida quando ocorrer este evento.
Uma outra thread deverá ler tudo o que for informado via teclado e, a cada caractere lido, inserí-lo no lugar do caractere “a” acima, na região compartilhada. Ao inserir o valor “*”, esta thread deverá ser finalizada, e então a mensagem “Fim da thread cliente” deverá ser emitida.
No caso teria que usar uma classe pra servidora e outra pra cliente. E depois uma que chame as duas ?
public class Product {
private String content;
public String getContent() { return this.content; }
public synchronized void consume() throws Exception {
if (this.content == null) {
sysout("Nothing to consume...");
wait();
}
sysout("Consuming: " + this.content);
this.content = null;
notifyAll();
}
public synchronized void produce() throws Exception {
if (this.content != null) {
sysout("Waiting to be consumed...");
wait();
}
this.content = "new content";
sysout("Produced: " + this.content);
notifyAll();
}
}
E finalmente o starter:
public class Starter {
public static void main(String[] args) {
Product product = new Product();
Thread producer = new Producer(product);
Thread consumer = new Consumer(product);
producer.start();
consumer.start();
}
}
Dei uma testada e agora acho que está como deve ser. Faz os ajustes que são necessários pro teu caso, o caminho é este. T+
Seguinte… o exemplo de produtor/consumidor é bem interessante. Mas pelo que já começei a fazer, seria necessário quatro classes: Servidora, Cliente, StarterThreads e AreaCompartilhada pra ficar bem organizado.
Preciso de uma luz pra entender melhor essa paradinha de threads. Sou iniciante nesse assunto. Preciso de ajuda!!!
Aguardo contato.
Se ficar melhor, poderiam entrar em contato comigo via msn. Se algúem interessar é so escrever nesse tópico.