Página Inicial do Fórum > Java Avançado

Threads - Lentidão ao iniciar processo. Normal?



Criar novo tópico   Responder tópico


  1. goathi
    Posts:8


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    Pessoal,
    Fiz uma aplicação "piloto" que basicamente pega algumas informações no banco e pra cada informação acessa uma URL, lê um XML, faz o parse deste XML usando JDOM, utilizando uma expressão XPATH e exibe estas informações na tela ( na verdade, a aplicação final deverá inserir estas informações no banco )

    Fiz tudo isso utlizando Threads pois inicialmente não queria que meu programa deixasse de fazer o resto do processo se não conseguisse finalizar um deles, por exemplo.

    Enfm ... o problema é que usando Threads tive um problema de memória que resolvi setando algumas configurações da VM. Resolvi esta questão, mas percebi que ao executar, o programa demorava muito pra exibir as informações, cheguei a contar 20 segundos e só depois disso as informações começaram a ser exibidas no mesmo momento, quase que instantaneamente.

    O que acontece? É assim mesmo que funciona? Parece que o programa executa todas as threads de uma vez, faz o que ele tem que fazer e só depois as informações são exibidas. Achei isso muito estranho.

    Alguém poderia me dar uma ajuda apenas dizendo se é assim mesmo que funciona? Ou talvez não seja assim quando eu estiver num ambiente realmente multiprocessado ...

    Ah, também fiz este exemplo sem usar threads e ele funcionou numa boa.
    Valeu!
    _________________
    public Goathi extends Programador implements AspiranteAProgramadorJava{

    }




  1. goathi
    Posts:8


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    Alguém saberia apenas se geralmente isso acontence? É normal?
    _________________
    public Goathi extends Programador implements AspiranteAProgramadorJava{

    }




  1. simu
    Posts:9417


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    normal nao é, mas depende muito de como programou.
    Nao sei se voce está usando uma GUI (Swing) mas o seu problema pode ser a atualizacao da GUI, que roda num (único) Thread próprio (AWT-Event Queue). Se esse for bloqueado, a GUI somente irá mostrar novos valores quando esse Thread desbloquear.
    Outro ponto é o problema de memória, indica que voce está usando muita memória o que tambem pode influenciar a velocidade.
    Sem ter o código é dificil dizer mais (as vezes vendo o código tambem nao facilita, dependendo da complexidade :--)
    Voce pode tentar comentar/substituir algumas instrucoes ate achar o que realmente está causando o problema. Exemplo: em vez de esperar dados externos, use alguns locais (constantes).
    []]
    _________________
      Nome real: Carlos F. Heuberger

    Removeram os meus direitos de administrador e moderador - sem aviso, pela segunda vez - contate o ombudsman (?), a equipejavafree ou a "alta gerência" se necessário - Que pena... que terminou dessa maneira!

    "The mod javafree deserves, but not the one it needs right now."
    --------------------
    Não leio nem respondo MPs!
    This posting is provided AS IS with no warranties and confers no rights.




  1. gregui
    Posts:54


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    Para resolver isso vc terá que fazer vários testes!

    entre elas, executar cada thread separadamente, para ver se uma delas está demorando, ou apenas iniciar o processo de cada thread separadamente.
    Outra coisa é fazer um log de tempo que cada thread, para poder saber onde é que o processo fica lento!
    e também verificar conexão com banco, consultas e até conexão com internet, já que vc informou que o processo acessa urls.

    só depois disso vc irá saber onde está o problema!
    _________________
    Gregui Shigunov

    http://gregui-shigunov.blogspot.com

    A dúvida é o princípio da sabedoria!!!




  1. Relacionados





Novo tópico   Responder tópico     Índice do forum -> Java Avançado