Problema com uso de Thread passagem de parâmetros[Resolvido]

Galera é o seguinte tenho uma aplicação onde em determinado ponto um método executa uma função que requer muito tempo de processamento e nesse momento a aplicação fica travada e o usuário não consegue realizar nenhuma operação e isso não é aceitavel quero que a aplicação fique disponivel para que o usuário possa realizar outras operações. Então resolvi passa esse processamento para um thread para que o sistema
faça execução dessa operação em segundo plano entrentanto não percebi alteração alguma no resultado do processamento a aplicação ainda continua travada sem que o usuário possa realizar outras atividades. Então resolvi colocar esse post pra que vcs pudessem me ajudar na manipulação dessa thread outro ponto é que além de realizar esse processamento essa thread também precisa receber parâmetros que serão utilizador por esse método durante sua execução. agradeço a ajuda.

Criei a thread e alguns atributos com os seus métodos set não sei se essa é abordagem correta foi uma tentativa de fazer o que eu queria.

public class EnvioSMSThreadArquivo extends Thread {

	private Mensagem mensagem;
	private byte[] bytes;
	private String fileName;
	private String diretorio;

	private ControladorMensagem cm = new ControladorMensagem();

	public void run() {
		
		try {

			cm.inserirMensagensArquivo(mensagem, bytes, fileName, diretorio);
		
		} catch (Exception e) {
			
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	public void setMensagem(Mensagem mensagem) {
		this.mensagem = mensagem;
	}

	public void setBytes(byte[] bytes) {
		this.bytes = bytes;
	}

	public void setFileName(String fileName) {
		this.fileName = fileName;
	}

	public void setDiretorio(String diretorio) {
		this.diretorio = diretorio;
	}

}

Esse método aqui fica dentro de uma classe chamada serviço e quando ele é executado o que eu faço é criar minha thread setar os parâmetros e mandar essa thread rodar o sistema faz todo execução normalmente
mas cotinua tendo um desempenho ruim o usuário fica esperando e não consegue realizar nenhuma tarefa enquanto essa não for concluida.

[code]
public void inserirMensagensGrupo(Mensagem mensagem,
ArrayList listaGrupo) {

	EnvioSMSThread thread = new EnvioSMSThread();

	thread.setMensagem(mensagem);
	thread.setLista(listaGrupo);

	thread.run();

}[/code]

Agradeço a ajuda pessoal.

Teria que chamar o método start(); ao invéz do run(); na thread.

o problema é que essa thread é do tipo EnvioSMSThreadArquivo e quando eu faço thread.start() não têm esse método.

se fizer.


Thread t = new SeuObjetThread();
t.start();

o método start(); aparece no autocomplete de sua IDE ?

certo mas ainda preciso passa aqueles parâmetros para o método que está dentro do run da thread e como faço isso?

No contrutor da Sua classe que herda de Thread.


class SuaClasse extends Thread {

private String param1;
private int param2;

public SuaClasse(String param1,int param2.){
   this.param1 = param1;
   this.param2 = param2 ;
}


@Override
public void run(){

 //aqui usa os campos que precisa na thread
}


}


ok resolvido hehe vlw cara.

coloque [RESOLVIDO] no titulo do tópico