| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/09/2006 21:05:14
|
louds
Moderador
![[Avatar]](/images/avatar/1e48c4420b7073bc11916c6c1de226bb.jpg)
Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline
|
Estou escrevendo um artigo sobre o assunto e gostaria de saber das experiências do pessoal do fórum na utilização do de conconcorrência do Java5.
Quem aqui utiliza dessas classes? Ou prefere utilizar um dos backports (versões reescritas p/ funcionar com o java 1.4)? Ou ainda está usando o util.concurrent do Doug Lea?
Falo da minha experiência, eu utilizo muito o pacote do Doug Lea porque considero ele o mais estavel dentre todas opções e não posso utilizar java5 nos meus atuais projetos.
Eu utilizo basicamente variaveis atômicas, o framework de executors (thread pool) quase sempre e as collections muito pouco.
|
http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/09/2006 10:31:39
|
psevestre
JavaEvangelist
Membro desde: 13/05/2005 12:53:19
Mensagens: 432
Localização: São Paulo
Offline
|
Uso o util.concurrent onde o Java é 1.4. Passei a usar o java.util.concurrent em projetos mais recences onde posso usar o Java 5. A transição foi tranquila para o caso dos pools de execução e outras primitivas, o que não é exatamente de se espantar, já que a java.util.concurrent foi criada em cima da do Doug Lea.
Achei meio besta o introdução do TimeUnit. Criou uma complexidade desnecessária para a maioria dos cenários, onde o uso de um long com milissegundos resolve bem o problema. Cenários "hard real-time", com tempos de resposta de microsegundos não poderiam usar esta abordagem, mas quando a coisa chega neste nível, provavelmente java já não faz mais parte da paisagem...
|
http://justaphilpicks.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 10:26:34
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
Bem, eu uso a do Java 5. A API do Doug Lea usei para estudar o livro dele (que agora recentemente estava relendo ao iniciar a leitura do livro do Goetz).
Acho esta API absolutamente fundamental para quem quer trabalhar com concorrência com um pouco mais de controle sobre o que está fazendo. Relendo o livro do Doug vi que ele continua atual e que os conceitos são excelentes. O livro poderia ser mais fácil de ler mas mesmo assim é um dos raros livros antigos que ainda valem a pena comprar.
A propósito deste assunto hoje saiu um artigo, que ainda não acabei de ler, mas que faço questão de compartilhar o link até para seguir chamando a atenção sobre a importância de conhecer esta API.
Discover the Elegant Simplicity of JSR 166
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 12:57:54
|
fabio.patricio
GUJ Master
Membro desde: 04/01/2004 02:51:33
Mensagens: 1512
Localização: Porto Alegre - RS
Offline
|
Olá,
Em um dos projetos que to usamos a API do Doug Lea. Particularmente eu trabalhei pouco com ela.
Em um outro projeto que estou desenvolvendo estou usando a java.util.concurrent, principalmente a classe ThreadPoolExecutor.
Luca, 5 estrelas pelo link. Muito bom, obrigado.
]['s
|
Fabio Patricio
http://blog.wansoft.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/09/2006 10:12:46
|
psevestre
JavaEvangelist
Membro desde: 13/05/2005 12:53:19
Mensagens: 432
Localização: São Paulo
Offline
|
Falando de concorrência, sugiro a quem tiver interesse no assunto uma olhada neste site:
http://www.wotug.org/occam/
A linguagem está por aí a uns 15 anos, e possui construções nativas para implementação de aplicações multi-thread e sincronização que são as mais elegantes que já vi.
Existe uma biblioteca que implementa os conceitos em java:
http://www.cs.kent.ac.uk/projects/ofa/jcsp/
Tenho a impressão que, com a popularização de processadores multicore, aplicações multithreaded passarão a ser mais comuns, porém o desenvolvimento deste tipo de aplicação requer alguma experiência e é bem mais difícil de se testar.
|
http://justaphilpicks.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/09/2006 10:58:04
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
Só um testemunho rápido mais com intuito de enfatizar que programação paralela é diferente de programação concorrente com threads que a gente faz com Java. Para aproveitar de verdade a capacidade de processamento paralelo, pode ser que seja preciso mudar completamente o algoritmo utilizado e até mesmo o modo de programar.
Lá pelos idos do início dos anos 90 a computação paralela era a grande promessa para resolver grandes sistemas de equações. Na COPPE/Eng. estruturas montaram uma máquina com vários processadores Intel i860 para testar os algoritmos. O meu amigo professor Nelson Ebecken (meu colega dos tempos de COPPE), montou uma equipe e teve a oportunidade de provar conceitos muito interessantes.
Como solução de grandes sistemas de equações já foi meu ganha pão, ouvi com interesse suas explicações e percebi que na verdade todo o sistema foi reescrito para aproveitar o paralelismo. Nada do meu cinto de utilidades servia naquele caso.
O PhD Nelson formou-se engenheiro estrutural pela UFF. Ele foi um dos responsáveis pelo desenvolvimento dos métodos computacionais que permitiram à Petrobrás construir estruturas para explorar águas profundas. Depois se tornou um guru em Data Mining com trabalhos apresentados em todo o mundo. Hoje sua equipe alia Data Mining com paralelismo mas não sei em que pé andam as pesquisas.
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/09/2006 12:44:54
|
psevestre
JavaEvangelist
Membro desde: 13/05/2005 12:53:19
Mensagens: 432
Localização: São Paulo
Offline
|
Luca wrote:
Lá pelos idos do início dos anos 90 a computação paralela era a grande promessa para resolver grandes sistemas de equações. Na COPPE/Eng. estruturas montaram uma máquina com vários processadores Intel i860 para testar os algoritmos. O meu amigo professor Nelson Ebecken (meu colega dos tempos de COPPE), montou uma equipe e teve a oportunidade de provar conceitos muito interessantes.
Putz, isto me fez reativar umas sinapses já a muito desativadas...
MIMD/SIMD e outras siglas voltaram junto.
O meu projeto de formatura foi em cima dos transputers, justamente para explorar algumas possibilidades abertas para o tipo de arquitetura em que estas CPUs únicas no gênero permitiam.
Como os chips eram raros (e caros), montamos um protótipo em cima dos respeitáveis 68020, com 4 módulos com dois canais cada. Para demonstrar a escalabilidade, elegemos um algorítmo de geração de fractais. Acho que tínhamos como meta ter algo de ray-tracing, mas nao lembro agora se chegamos a implementar.
|
http://justaphilpicks.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/09/2006 14:46:45
|
AllMighty
Java Ninja
![[Avatar]](/images/avatar/c900197841211ba608f56.gif)
Membro desde: 16/08/2004 17:21:42
Mensagens: 266
Localização: São Paulo
Offline
|
Luca, dá para comentar um pouco sobre como o livro do Goetz se compara com o do Lea?
Thanks.
|
Rafael de F. Ferreira
Blog: http://www.rafaelferreira.net/
Links miscelâneos: http://stoa.usp.br/rafaelferreira |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/09/2006 16:45:12
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
AllMighty wrote:Luca, dá para comentar um pouco sobre como o livro do Goetz se compara com o do Lea?
O livro do Goetz é absolutamente fundamental. Estou gostando muito. Não vou dizer que é melhor do que o CJP do Lea porque na verdade ele é de outro tipo. O Lea é como se fosse um livro de referência enquanto o do Goetz é de regras práticas. A vantagem do Goetz é ser mais novo, poder citar o Lea e usar o Java 5.
E para quem quer rever Threads com Java 5, um bom livro que comprei meio assim só por comprar mas que achei muito bom é a nova edição do Java Threads do Scott Oaks.
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
|
|