Trabalhando com threads  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
latino
Smalltalk

Membro desde: 30/05/2008 17:49:00
Mensagens: 2
Offline

Então pessoal tenho q criar uma classe em java que permita paralelizar uma pesquisa em um array de inteiros. Isso deve ser feito com o seguinte método: public static int parallelSearck(int x, int[] A, int numThreads). Este método cria tantas threads quanto especificadas em numThreads, divide o array A em muitas partes e cada thread parte do array para procurar sequencialmente pelo valor x. Se uma thread encontrar o valor x, então é retornado o índice i (A[i] = x), ao contrário - 1.
O meu problema é que não sei nem por onde começar.


Alguém tem alguma diga de como faço essa implementação.. vlw galera!!!
FilhoDoRei
JavaTeenager
[Avatar]

Membro desde: 13/03/2008 19:52:45
Mensagens: 199
Localização: Taguatinga
Offline

Voce pode começar lendo esse artigo:

http://www.guj.com.br/java.tutorial.artigo.43.1.guj

vlws

"Sei que voce não entende
A profundidade do Meu amor
Como morri na cruz pelos teus pecados
E sei que você não compreende
O quanto te dei
Mas prometo, faria tudo isso novamente".


[WWW] [Yahoo!] aim icon [MSN] [ICQ]
rflprp
GUJ Ranger

Membro desde: 27/04/2005 18:52:49
Mensagens: 822
Offline

Tava precisando mesmo tirar um pouco da ferrugem em threads, segue um código que fiz aqui pra exemplificar o funcionamento.



[]´s

This message was edited 1 time. Last update was at 31/05/2008 00:11:23

Bruno Laturner
GUJ Expert
[Avatar]

Membro desde: 18/02/2008 16:17:53
Mensagens: 3002
Offline

Fiquei pensando em assuntos extras para esse problema.

Como que eu faria um controlador p/ essas threads que recebesse, caso alguma tenha sucesso encontrar, a posição onde está o item procurado, que também parasse as outras threads quando recebesse esse valor, ou que percebesse que todas as threads pararam sem encontrar uma resposta, porém sem ficar checando toda hora se elas estão vivas ou não, algo como ela ficar de prontidão p/ receber valores, mas sem comer recursos de cpu. Um sistema baseado em listeners e callbacks.

Outra pergunta, como faço p/ reusar uma thread que já terminou seu processamento, p/, por exemplo, dar outro intervalo de pesquisa p/ ela procurar. O objetivo seria criar um número fixo de threads, umas 4, para checarem 10 intervalos, mas sem dar new para criar novas threads.

A resposta acima foi achada em menos de 5 minutos no google.
The prisoner falls in love with his chains. --E.W. Dijkstra
[WWW]
latino
Smalltalk

Membro desde: 30/05/2008 17:49:00
Mensagens: 2
Offline

Flw Rafael fui de grã ajuda.... t mais
sergiotaborda
GUJ Expert
[Avatar]

Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline

Bruno Laturner wrote:Fiquei pensando em assuntos extras para esse problema.

Como que eu faria um controlador p/ essas threads que recebesse, caso alguma tenha sucesso encontrar, a posição onde está o item procurado, que também parasse as outras threads quando recebesse esse valor, ou que percebesse que todas as threads pararam sem encontrar uma resposta, porém sem ficar checando toda hora se elas estão vivas ou não, algo como ela ficar de prontidão p/ receber valores, mas sem comer recursos de cpu. Um sistema baseado em listeners e callbacks.


Dê uma olhada em Executer , ExecuterService, Future e Callable no pacote java.util.concurrent


Outra pergunta, como faço p/ reusar uma thread que já terminou seu processamento, p/, por exemplo, dar outro intervalo de pesquisa p/ ela procurar. O objetivo seria criar um número fixo de threads, umas 4, para checarem 10 intervalos, mas sem dar new para criar novas threads.


Vc não pode reutilizar threads que já terminaram. Simplesmente não pode.
O truque é manter um Thread , ou mais, ativas num loop infinito e passar a elas Runnables ou Collables para serem executados.
Quanto não há nada para correr a Thread simplesmente entra em espera ( sleep). Este tipo de mecanismo é simples de utilizar com os Executer disponiveis principallemnte ThreadPoolExecuterService

This message was edited 1 time. Last update was at 02/06/2008 11:53:44


Criando sua própria API de Validação



Blog do MiddleHeaven
[WWW]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20581
Localização: Curitiba/PR
Offline

sergiotaborda wrote:Dê uma olhada em Executer , ExecuterService, Future e Callable no pacote java.util.concurrent

Postei um exemplo sobre isso aqui: http://www.guj.com.br/posts/list/50321.java#264645

This message was edited 1 time. Last update was at 02/06/2008 12:01:31


@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
Jaqueline.
Smalltalk

Membro desde: 20/07/2009 12:01:02
Mensagens: 1
Offline

latino wrote:Então pessoal tenho q criar uma classe em java que permita paralelizar uma pesquisa em um array de inteiros. Isso deve ser feito com o seguinte método: public static int parallelSearck(int x, int[] A, int numThreads). Este método cria tantas threads quanto especificadas em numThreads, divide o array A em muitas partes e cada thread parte do array para procurar sequencialmente pelo valor x. Se uma thread encontrar o valor x, então é retornado o índice i (A[i] = x), ao contrário - 1.
O meu problema é que não sei nem por onde começar.


Alguém tem alguma diga de como faço essa implementação.. vlw galera!!!


olha num tenho nenhuma ideia por enquanto .... qndo eu conseguir algma ideia te passso. ok ?
uma perguntinha se vc tiver orkut me passa teu i-mail por favor... te adoro xauu
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team