Ir para o conteúdo
zecapistolas

Paralelismo em Java

Mensagens Recomendadas

zecapistolas

Viva,

Tenho um for que está a demorar muito tempo.... Basicamente o for é o seguinte:

for (int contador = 0; contador < 50; contador++)
{
        // escrever no ficheiro file-(contador).txt
}

De que forma posso paralelizar este for?  :hmm:

Ao que parece o Java7 tem uma nova característica ForkJoin, mas não consigo perceber como usar para paralelizar o meu for....  :wallbash:

cumps  ;)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rui Carlos

Vê este link: http://www.vogella.de/articles/JavaConcurrency/article.html#threadpools

Penso que é fácil adaptar ao que queres. Atenção ao número de threads, pois podes ter problemas com o facto de teres muitas threads a tentarem escrever no disco ao mesmo tempo (e o disco normalmente é bastante mais lento do que o processador/memória).

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
zecapistolas

Vê este link: http://www.vogella.de/articles/JavaConcurrency/article.html#threadpools

Penso que é fácil adaptar ao que queres. Atenção ao número de threads, pois podes ter problemas com o facto de teres muitas threads a tentarem escrever no disco ao mesmo tempo (e o disco normalmente é bastante mais lento do que o processador/memória).

Experimentei implementar com Executors (tal como tinhas sugerido) e também experimentei com Fork-Join do Java 7.... Como Executors tive pior resultados, deve ser da situação que disseste de estar dependente do tempo de escrita em disco, com Fork-Join consegui um melhoria de 25%, nada mau....

cumps  ;)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pedrotuga

Zeca, lá no link diz que não vai adiantar nada se tiveres que fazer operações IO.

Eu não sabia disto, li o teu link. Wow, isto é espectacular. É isto que eu gosto no Java, enquanto outros pensam que descobriram a pólvora com o map-reduce, o java simplesmente oferece essa funcionalidade para quem precisa sem alaridos ridículos.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rui Carlos

Com Executors pode ser uma questão de ajustares o número de threads (provavelmente não adianta ter mais de duas, é só mesmo para aproveitar os espaços de tempo em que uma thread não está a aceder ao disco). No problema em concreto, não vejo razão para se usar Fork and Join (mas também não há problema um usá-lo :) ).

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.