Bom dia,
Preciso de um programinha basico com threads.
Alguem poderia me ajudar, ficarei imensamente grata.
Lost
Bom dia,
Preciso de um programinha basico com threads.
Alguem poderia me ajudar, ficarei imensamente grata.
Lost
[quote=Lost]Bom dia,
Preciso de um programinha basico com threads.
Alguem poderia me ajudar, ficarei imensamente grata.
Lost[/quote]
Tem muita gente aqui que pode te ajudar … mas para isso todos precisam conhecer o seu problema …
“o que ta pegando ?”
Procure pelo problema de produtores e consumidores, é um caso clássico e tem bastante código por aí.
Não sei programar, mas preciso de um programa com threads que execute funções simples. Não tenho a minima ideia por onde começar.
Estou desesperada, pois tenho que entregar um trabalho na facu.
obrigada
Uma aula de threads então:
Para rodar uma thread, primeiro faça uma classe que tenha o conteúdo que a thread vai rodar. Essas classes implementam a interface Runnnable. Implementando Runnable, elas devem ter um método public void run() dentro delas que vai rodar o código.
Na classe abaixo, o Produtor recebe uma cesta vazia, e uma quantidade de itens a produzir. Ao ser chamada, o produtor vai colocar itens dentro da cesta uma X quantidade de vezes, e dormir por 1 segundo após cada inserção. Depois de colocado tudo, ele termina o processamento.
package threads;
import java.util.Collection;
public class Produtor implements Runnable
{
private Collection cesta;
private int qtde;
public Produtor(Collection cesta, int qtde)
{
this.cesta = cesta;
this.qtde = qtde;
}
public void run()
{
for (int i = 0; i < qtde; i++)
{
cesta.add(i);
try
{
Thread.sleep(1000);
}
catch (InterruptedException ex)
{
}
}
}
}
Depois temos a classe que vai rodar a thread. Esta classe cria a cesta vazia e decide uma quantidade. Depois de instanciar uma thread com o Produtor acima, passando os itens que ele precisa por parâmetro para seu construtor, iniciamos a thread como o método start (não é run).
Depois de iniciado, a cada 1,5 segundos ele imprime o conteúdo da cesta.
[code]package threads;
import java.util.Vector;
public class RodaThreads
{
public static void main(String[] args)
{
Vector cesta = new Vector();
int qtde = 10;
Thread t = new Thread(new Produtor(cesta, qtde));
t.start();
for (int i = 0; i < qtde; i++)
{
System.out.println(cesta);
try
{
Thread.sleep(1500);
}
catch (InterruptedException ex)
{
}
}
}
}
[/code]
O problema do produtor e consumidor começa com isto, e adiciona um consumidor que vai ficar tirando produtos da cesta ao mesmo tempo que o produtor coloca mais. A resolução desse problema é não deixar o consumidor ficar com fome(starvation) por causa de falta de produtos na cesta, nem deixar o produtor produzir demais, e desperdiçar a produção quando a cesta tiver cheia. Adicionamos mais produtores ou mais consumidores conforme a necessidade.
Cara super obrigada, valeu pela ajuda e pela ideia do programa.
Abraços