Pessoal,
tenho o seguinte código dentro de um actionPerformed(
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.
else
JOptionPane.
}
}
Mas como estou utilizando SwingWorker, toda a regra de negócio dentro do
doInBackground(
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(
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(
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]
Para upload/download de arquivos: http://www.yahoogroups.com/files/java-br







0 comentários:
Postar um comentário