Threads e SWING

Olah Pessoal.
Estou com um probleminha em uma aplicação que estou montando.
A aplicação start uma thread que faz a leitura no banco de dados de 1 em 1 min. e atualiza alguns TextFields. Essa thread recebe uma variavel que é o objeto que deve ser buscado no BD.
Ateh ai sem problemas, mas quando eu quero mudar o objeto de busca na thread, nao estou conseguindo. Nao estou tendo acesso a thread que foi iniciada e alterar a sua variavel de busca no BD.

Alguma sugestão.

post seu codigo principalmente a maneira de como vc esta iniciando a Thread, vc herdou Thread ou implemntou Runnable?

Olah, eu herdei Thread.
Segue abaixo o código da thread.

[code] public class poolmon extends Thread {

    String incuba,serial,datain,horain;
    double dados[] = new double [7];
    
    public poolmon (){
    }
    
    
    public void SetIncub (String incu) {
        this.incuba=incu;
    }
    
    public void run (){
        String queryi = "SELECT serial FROM incubadora where alias ='"+incuba+"'";
        System.out.println(queryi);
        
        while (true){

            try {
                resultset = stm.executeQuery(queryi);
                if(resultset.next())
                    serial = resultset.getString(1);
                String query ="SELECT * FROM dados WHERE serial='"+serial+"' order by data desc, indice desc limit 1";
                System.out.println(query);
                if (serial!=null){
                    resultset=stm.executeQuery(query);
                }
                if(resultset.next()){
                    dados[0]=Double.parseDouble(resultset.getString(2));
                    dados[1]=Double.parseDouble(resultset.getString(3));
                    dados[2]=Double.parseDouble(resultset.getString(6));
                    dados[3]=Double.parseDouble(resultset.getString(5));
                    dados[4]=Double.parseDouble(resultset.getString(4));
                    dados[5]=Double.parseDouble(resultset.getString(8));
                    dados[6]=Double.parseDouble(resultset.getString(7));
                    datain=resultset.getDate(9).toString();
                    horain=resultset.getTime(10).toString();
                    updateMon(dados,datain,horain);
                }


            }
            catch(SQLException e){
                System.out.println(e);}
            try{
                Thread.sleep(45000);
            }catch (Exception e){
            }
        }
        
       
        
    }

[/code]©
e como eu inicio a thread

private poolmon pooling = new poolmon(); pooling.SetIncub(jcincub.getSelectedItem().toString()); pooling.start();©
Obrigado.

A thread fica executando para sempre porque tem esse while(true), é o que esta dentro disso que vai ser executado novamente depois de tantos minutos. O sql que faz a busca com o ‘incuba’ esta fora desse while(true), logo ele só vai ser executado na primeira vez e assim permanecera para o resto de sua vida, e ai não adianta vc mudar o valor de incuba que a query já esta la feita, com o valor antigo. Experimenta colocar esse sql dentro do while(true)…

Outra coisa, da uma olhada em em PrepareStatement e cria seus sql usando ele
:wink: