Galera, tem como usar mais de uma Thread em uma classe ? Pois estou usando Thread para realizar buscas no banco de dados, mais tem varias buscas na classe e a unica maneira que sei fazer é o doe exemplo abaixo
publicclassLoginimplementsRunnable{publicLogin(){ThreadLogin=newThread(newLogin());Login.start();}publicvoidrun(){//FAZ AS BUSCAS}}
Quem quer usar threads em Swing normalmente usa um SwingWorker. A vantagem de usar um SwingWorker é que existem métodos já prontos para você indicar o progresso da execução da tarefa (ou seja, se sua tarefa é longa mas pode ser dividida em pedaços, você pode atualizar um Progress Bar de forma relativamente simples) e também para você cancelar a execução de algo que está muito demorado.
(Você precisa ler as páginas seguintes a essa também, é claro. Em caso de dúvidas com o inglês, use o Google Translator. )
guitoneloto
Olá entanglement, Eu comecei a usar o SwingWorker, estou tendo pouca dificuldade mais ja está atendendo as minas nescessidades, pois a aplicação travava quando dava algum erro no Socket e no Mysql ou quando a conexao estava muito lenta…
Abaixo esta meu código que implementei em uma janela que faz a autenticação do usuário, seria desta forma que eu poderia usar o SwingWorker ?
publicvoidAutentica(){try{newSwingWorker(){protectedObjectdoInBackground()throwsException{try{//faz a conexao ao banco de dadosConectaDb();System.out.println("TENTANDO AUTENTICAR USUÁRIO");//string com o comando em sqlStringsqlBuscaLogin="SELECT Perfil.PerfilRegistro, Perfil.PerfilPNome, Perfil.PerfilSNome, Perfil.PerfilMsgPessoal, Perfil.PerfilEmail, Perfil.PerfilRg, Perfil.PerfilDtNasc, Perfil.PerfilCep, Perfil.PerfilFoto, Perfil.PerfilUser, Perfil.PerfilSenha, "+"Conexao.ConRegistro, Conexao.ConUser, Conexao.ConPorta, Conexao.ConIp "+"FROM Perfil "+"INNER JOIN Conexao ON Perfil.PerfilRegistro = Conexao.ConUser "+"WHERE `PerfilUser` = '"+jUser.getText()+"' AND `PerfilSenha` = '"+jSenha.getText()+"'";//+ "SELECT * FROM `Perfil` WHERE `PerfilUser` = '" + jUser.getText() + "' AND `PerfilSenha` = '" + jSenha.getText() + "'";try{//executa o sqlResultSetRBU=getDBStm().executeQuery(sqlBuscaLogin);//se existir algum usuário é executado o if abaixoif(RBU.next()){//retoma o primeiro nome do usuáriosetUserPNome(RBU.getString("Perfil.PerfilPNome"));//retorna o segundo nome do usuáriosetUserSNome(RBU.getString("Perfil.PerfilSNome"));//retorna a mensagem pessoal do usuáriosetUserMPessoal(RBU.getString("Perfil.PerfilMsgPessoal"));//retorna o email do usuáropsetUserEmail(RBU.getString("Perfil.PerfilEmail"));//retorna meu id de registrosetUserRegistro(RBU.getInt("Perfil.PerfilRegistro"));//adiciona dados de conexaoAddConexao();}//caso não encontre o usuario no banco de dadoselse{//Mostra mensagem ao usuárioLogando(false);JOptionPane.showMessageDialog(null,"ATENÇÃO USUÁRIO\nUSUÁRIO NÃO ENCONTRADO","Atenção",JOptionPane.DEFAULT_OPTION);}}catch(Exceptionex){//exibe advertencia em caso de erro ao tentar efetuar o loginJOptionPane.showMessageDialog(jLogin,"ERRO AO TENTAR REALIZAR LOGIN\nERRO:1-0001","Atenção",JOptionPane.ERROR_MESSAGE);System.out.println("ERRO AO REALIZAR BUSCA DE LOGIN\nERRO: "+ex);}}catch(Exceptionex){}returnnull;}protectedvoiddone(){//System.out.println("haaaassd"); }}.execute();