sexta-feira, 11 de dezembro de 2009

[java-br] SwingWorker e Observer

·

 

Pessoal,
tenho o seguinte código dentro de um actionPerformed(), então lembrando que
tudo que está aqui será executado na thread da AWT.

SwingWorker a = new SwingWorker() {
public Object doInBackground() {
boolean resultado = modelo.salvar();
return resultado;
}

public void done() {
boolean resultado = (Boolean) get();
if (resultado)
JOptionPane.showMessageDialog(null, "salvo com sucesso");
else
JOptionPane.showMessageDialog(null, "erro ao salvar");
}
}

Mas como estou utilizando SwingWorker, toda a regra de negócio dentro do
doInBackground() será chamado em uma thread a parte, deixando a thread da
AWT livre, que só será chamada novamente no método done(), até ai OK!
Mas e se eu estiver utilizando observadores dentro do método salvar() ?, por
ex:

class Modelo extends Observable {
public boolean salvar {
boolean res = em.persist();
atualizar();

return res;
}

public void atualizar() {
setChanged();
notifyObservers();
}
}

Sendo assim, a thread pararela vai chamar o método salvar(), que vai chamar
o atualizar(), que vai chamar o notifyObservers() e vai invocar o método
update() das janelas que estão observando-a.
e agora a dúvida, em que thread vai rodar o bloco de código dentro do
update()? na thread pararela ou na thread da AWT?
ou vai rodar sempre na pararela e caso tenha algum comando que manipule a
Janela, será delegado essa tarefa para thread AWT?
lembrando que após chamar o update() ele voltará para o doInBackground() e
chamará o done(), desta vez já estando na thread AWT.

Ele funciona corretamente, mas não sei se estou "estragando" o SwingWorker.

Obrigado

[As partes desta mensagem que não continham texto foram removidas]

__._,_.___
Atividade nos últimos dias:
Para sair da lista, envie email para: java-br-unsubscribe@yahoogroups.com
Para upload/download de arquivos: http://www.yahoogroups.com/files/java-br
.

__,_._,___

0 comentários:

Pague com LPs do Mister Colibri

Pague com LPs do Mister Colibri
Quer comprar celular,Tablet,pen drive, GPS e muito outros produtos e ainda podendo pagar tudo em LPs ?Pois saiba que isso é possível,basta você visitar o site downloadstotal.com e realizar a sua compra com toda tranquilidade e segurança!!!

Hora

Online

Arquivo do Blog