| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/05/2010 11:48:22
|
Hebertbc
JavaChild
![[Avatar]](/images/avatar/4a91f7314e289f078ec79edba82bc972.jpg)
Membro desde: 07/11/2008 20:27:15
Mensagens: 113
Localização: Campo Grande / MS
Offline
|
Bom dia,
Estava pensando se é possivel fazer a seguinte parada:
Tenho uma thread (A) que le uma lista de arquivos, para cada arquivo ele processa sua linhas, seria possivel eu criar uma thread (B) para processar 1 arquivo com uma thread (C) que processe 1 linha. Exemplo:
Tenho 10 arquivos com 20 linhas cada, na thread(A) principal seriam criadas 10 threads(B) e cada uma dessas criariam 20 threads(C), processando tudo ao mesmo tempo.
É possivel fazer esse rolo? alguma dica?
EDIT:
Tava me esquecendo, para cada thread(B) tenho que salvar o retorno das threads(C) em um arquivo.
Obrigado pela atenção pessoal.
This message was edited 2 times. Last update was at 28/05/2010 11:53:27
|
C'est la vie monsieur excentrique... |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/05/2010 12:56:18
|
rdgms
Virtual Machine Man
![[Avatar]](/images/avatar/825ab77fe4eb3419db2fc9c6ceff7146.jpg)
Membro desde: 21/12/2006 22:08:57
Mensagens: 628
Localização: São Paulo
Offline
|
Tem como você criar um atributo de referencia com o metodo get e set sincronizado.. ai você pode pegar o valor desse atributo (ultimo indice) e ai .. é logica..
|
PDF, JPG, GIF, DOC e DOCX
JAVA! SCALA!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/05/2010 13:05:32
|
mtakeda
JavaBaby
Membro desde: 02/04/2004 19:45:37
Mensagens: 94
Offline
|
Hebertbc, fazer tem. O rdgms já até deu uma dica.
Mas acho que não seria uma boa idéia na prática. Eu não sei quanto tempo dura o processamento da sua linha, mas se você abrir esse monte de threads, o gargalo vai ser o IO de arquivo e isso fica pro sistema operacional. Então, suas threads vão ficar bloqueando toda hora pra esperar a leitura e escrita de arquivo enquanto outras threads ganham a vez. Provavelmente o desempenho vai ser pior do que se você fizer em uma ou duas threads, a menos que os seus arquivos estejam espalhados em file systems diferentes, o que eu imagino que não seja o caso.
Se seu objetivo for aumentar o desempenho e o processamento da sua linha é lento, o que eu recomendaria é que você tivesse uma thread principal para ler os arquivos e outras para o processamento da linha.
Mas tudo isso vai depender de todos de diversos aspectos (tamanho dos arquivos, tempo de processamento da linha, file system, etc)
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/05/2010 16:32:24
|
Hebertbc
JavaChild
![[Avatar]](/images/avatar/4a91f7314e289f078ec79edba82bc972.jpg)
Membro desde: 07/11/2008 20:27:15
Mensagens: 113
Localização: Campo Grande / MS
Offline
|
Ja tinha pensado nisso... ai o que fiz.... cada arquivo carrego linha a linha em um List... a linha não é extensa deve ter uns 50 caracteres no maximo.... o tempo de processamento é entre 0.1s a 6s... por isso quero processar tudo ao mesmo tempo...
Imagina um arquivo com 1000 linhas (1000x6) no pior tempo 6000s - 100m - 1h40, sendo que mesmo que processe tudo ao mesmo tempo e demore 5~10min para todas threads finalizarem ... continua compensando
This message was edited 1 time. Last update was at 28/05/2010 16:33:24
|
C'est la vie monsieur excentrique... |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/05/2010 17:23:50
|
mtakeda
JavaBaby
Membro desde: 02/04/2004 19:45:37
Mensagens: 94
Offline
|
Esse é o meu ponto: se você abrir uma thread por arquivo e depois mais uma por linha, eu não acredito que o So vai conseguir processar tudo ao mesmo tempo, porque as thread vão se bloquear no IO.
Você pode fazer os testes e nos dizer depois (vai ser uma métrica interessante), mas eu acho que você não vai reduzir muito o tempo de processamento, ao custo de uma implementação muito mais complexa.
Mas tenta e aí e compartilha o resultado com a gente!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/05/2010 13:03:24
|
Hebertbc
JavaChild
![[Avatar]](/images/avatar/4a91f7314e289f078ec79edba82bc972.jpg)
Membro desde: 07/11/2008 20:27:15
Mensagens: 113
Localização: Campo Grande / MS
Offline
|
correto... segunda feira finalizo... faço os testes e posto os resultados...
|
C'est la vie monsieur excentrique... |
|
|
 |
|
|