Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

zecapistolas

Paralelismo em Java

Recommended Posts

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?  🤔

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  ;)

Share this post


Link to post
Share on other 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  ;)

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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 :) ).

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.