| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/01/2009 08:22:40
|
didiosam
JavaBaby
Membro desde: 06/11/2006 23:52:35
Mensagens: 85
Localização: Cascavel - PR
Offline
|
bom dia moçada, é o seguinte ...
estou querendo alterar uma aplicação que tenho para utilizar threads na parte que diz respeito ao carregamento das telas internas de meu sistema ...
ai vcs me perguntam: como assim??
bem, tenho uma aplicação que abre um monte de internal frames (o usuario vai clicando e abrindo) que servem para entrada e saída de dados de forma geral; dentre essas telas algumas carregam rápido, algumas demoram um pouco mais e assim por diante. Eu estava pensando em transformar cada tela interna em uma thread para que elas trabalhassem "independente" da thread principal, no seguinte sentido, se o usuario mandar abrir uma tela que demora, a aplicação nao ficar travada esperando o termino desse carregamento, caso alguma tela trave/ de problema (espero q nunca aconteça ) nao parar o sistema todo, esse tipo de coisa ...
ai vcs me perguntam de novo: tá, mas e qual é a dúvida?
então, tendo em vista esse cenário eu gostaria de saber de quem já tem experiência com esse tipo de situação ae, o que consideram melhor? essa linha que estou vendo é boa (cada tela interna ser uma thread), vocês tem outras idéias? existe algum problema grave que nao estou vendo? afetará algo na performance do sistema? tem mais algum ponto importante que devo considerar aqui?
agradeço quem puder me dar alguma dica
[]´s
Giovani
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/01/2009 14:12:06
|
andreban
JavaTeenager
Membro desde: 11/07/2006 10:41:57
Mensagens: 188
Localização: Rio de Janeiro
Offline
|
Olá.
Bom, vamos por partes... O Sistemas de eventos do Swing roda em uma thread só. Portanto, não é muito apropriado rodar cada tela numa thread exatamenteo. O que acontece também, é que não é sua tela que demora para abrir, e sim uma tarefa que o seu sistema está executando, e que depois de executada abre sua tela, certo?
Então, o que vc vai rodar uma thread separada é essa tarefa do seu sistema. E quando essa tarefa finalizar a execução vc vai abrir a tela nova . Enquanto a tarefa nao ermina de ser executada, imagino que vc queira mostrar uma barra de progresso, uma ampulheta ou qualquer outra firula para o usuário saber o que sistema está pensando.
Recomento vc dar uma olhada na seguinte classe do java 1.6
http://java.sun.com/javase/6/docs/api/javax/swing/SwingWorker.html
Abs
|
--== http://www.codemansion.com/ ==-- Blog de Desenvolvimento Android e Games
-== http://mobplug.com/ ==-- Simple products, powerful solutions!
SCJA | SJCP | SCJD | SCWCD |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/01/2009 14:23:42
|
didiosam
JavaBaby
Membro desde: 06/11/2006 23:52:35
Mensagens: 85
Localização: Cascavel - PR
Offline
|
opa andreban, correto o que voce falou ... inclusive voce comentou ali o "detalhe" que eu nao havia percebido antes de formular esse topico:
O que acontece também, é que não é sua tela que demora para abrir, e sim uma tarefa que o seu sistema está executando, e que depois de executada abre sua tela
apenas para complementar o topico aqui caso seja util a mais usuarios, teve um outro colega que me enviou os seguintes links para olhar que vao de encontro tambem ao que vc me passou andre:
http://java.sun.com/docs/books/tutorial/uiswing/concurrency/
http://java.sun.com/products/jfc/tsc/articles/threads/threads1.html
obrigado pela ajuda
[]´s
Giovani
|
|
|
 |
|
|
|
|