Galera ,
Estou com uma duvida acho que básica 
Pra cada listener ( seja um listener swing de um botão , de uma porta serial , de um socket ) é criado uma thread ?
Ou seja ,
Se eu desenhar um Jpanel com 50 botões , teria 50 threads como listeners ?
Abraços ,
Vlw
Não.
Porque você está preocupado com isso?
[quote=davidbuzatto]Não.
Porque você está preocupado com isso?[/quote]
Do nada bateu essa duvida existêncial .
Porque não ?
Não; um Listener não é uma Thread, e uma thread não é criada para o listener. O listener roda na “thread do Swing”, que é uma única thread. Portanto, se você rodar código que é muito lento no Listener, a tela fica congelada, exatamente porque o processamento não é feito em uma thread separada.
[quote=entanglement]Não; um Listener não é uma Thread, e uma thread não é criada para o listener. O listener roda na “thread do Swing”, que é uma única thread. Portanto, se você rodar código que é muito lento no Listener, a tela fica congelada, exatamente porque o processamento não é feito em uma thread separada.
[/quote]
Certo e eu poderia ter diversos listeners pendurado em uma Thread ?
entanglement, é uma thread do awt não é não?
Os eventos vão sendo enfileirados, e a thread que monitora essa fila os consome. É mais ou menos assim que funciona.
Então é uma thread que cuida disso para os componentes gráficos.
[]´s
[quote=davidbuzatto]entanglement, é uma thread do awt não é não?
Os eventos vão sendo enfileirados, e a thread que monitora essa fila os consome. É mais ou menos assim que funciona.
Então é uma thread que cuida disso para os componentes gráficos.
[]´s[/quote]
Beleza . Mas eu poderia por exemplo chamar algum componente Swing a partir da minha thread Main e colocar alguns listeners nela .
Porem a thread continua lendo meus métodos implementados e ouvindo os listeners certo ?
Qual seria a prioridade neste caso ? Ler meus métodos ou listeners?
[quote=Zaperjava]Beleza . Mas eu poderia por exemplo chamar algum componente Swing a partir da minha thread Main e colocar alguns listeners nela .
Porem a thread continua lendo meus métodos implementados e ouvindo os listeners certo ?
Qual seria a prioridade neste caso ? Ler meus métodos ou listeners?[/quote]
Acho que você está confundindo código com thread.
Thread é thread, objeto é objeto, código é código.
Uma thread nada mais é que uma linha de execução do seu programa. Duas threads, ao mesmo tempo, podem executar trechos de código da mesma classe. Os objetos ainda são os mesmos.
Então o que acontece. Quando vc pela sua Main thread adiciona um listener à um botão, esse listener é registrado num objeto do Swing. Esse objeto mantém uma lista, de todos os listeners adicionados nele.
Quando um evento é disparado, a thread do swing vai até o botão, e percorre todos os objetos listeners que estão na sua lista, chamando o método actionPerformed de cada um deles. O código do seu listener é então executado. Essa execução ocorre dentro da thread do Swing, não da thread main, independente dela originalmente ter adicionado aquele listener lá ou não.