Duvida com Threads

3 respostas
C

Amigos…

Criei a seguinte Thread:

public class Th extends Thread
    {
    public void run()
        {
        rtConvUA.setText(String.valueOf(qdaLin)); //é um label que mostra a qdade de registro ja importados/atualizados
        jPB.setValue(WIDTH); //é um progressBar que mostra o andamento da importação/atualização
        jPB.setStringPainted(true);
        }
    }

e no corpo do programa faço a seguinte chamada da Thread:

Th contaSetor = new Th();
        qdaLin = 1;
        Statement inputFsetor;
        try
        {
            contaSetor.start();
            jPB.setIndeterminate(true);
            jPB.setMinimum(0);
            jPB.setMaximum(valSET); //valSet  é uma variavel que determina a qdade de resgistros a serem importados/atualizados
            inputFsetor = conF.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
            //ROTINA PARA ATUALIZAR O CADASTRO DOS SETORES
            while (qdaLin <= valSET)
            {
                rsAsetor = stmF.executeQuery("SELECT * FROM DBF_SETOR ORDER BY COD_UNID");
                rsAsetor.absolute(qdaLin);
                String val1 = rsAsetor.getString("COD_UNID");
                String val2 = rsAsetor.getString("DES_UNID");
                String sql = "INSERT INTO SETORES (CODIGO, DESCRICAO) VALUES ('0"+val1+"','"+val2.trim()+"')";
                inputFsetor.executeUpdate(sql);
                qdaLin++;
            }
            jPB.setIndeterminate(false);
        } catch (SQLException ex)
        {
            JOptionPane.showMessageDialog(null,"Dados não Localizados!!!"+ex);
        }
    }

o problema e q nao esta atualizando o Thread que modifica um rotulo rtConvUA.setText(String.valueOf(qdaLin)) que
mostra a quantidade de registro ja atualizados e o ProgressBar…

Agradeço a tds que vierem a ajudar…

3 Respostas

ViniGodoy

Quem tem que estar na Thread é a ROTINA PARA ATUALIZAR O CADASTRO DOS SETORES. Ela que é o processamento demorado.

C

ViniGodoy…

Valeu pela dica - Vou mexer no programa e ver se dá certo…

ViniGodoy

Aproveite e dá uma lida em:
http://download.oracle.com/javase/tutorial/uiswing/concurrency/

E em:
http://java.sun.com/products/jfc/tsc/articles/threads/threads1.html
http://java.sun.com/products/jfc/tsc/articles/threads/threads3.html

(O threads2 fala sobre o SwingWorker, na época que a implementação oficinal não existia. Por isso é bom pular).

Criado 29 de março de 2011
Ultima resposta 29 de mar. de 2011
Respostas 3
Participantes 2