ola pessoal, estou querendo enviar email usando thread. Queria enviar email de confirmação de cadastro e recuperação de senha. mas queria apenas uma classe para gerenciar isso, mas se na classe da thread so o método run pode ser implementado como fazer para chamar operações diferentes nele?
exemplo:
na minha classe que eu chamo a funcao eu uso
new SendEmail(emailService).start()
e a thread vai ser executada chamando no metodo run o metodo enviarEmailDeConfirmacao(), mas como eu faria para chamar outro metodo como enviarEmailRedefinicaoSenha() ? eu teria que criar uma outra classe implementando Runnable ou tem como criar alguma logica nesta classe?
Mas você tem a classe EmailService, acredito que ela é a responsável por gerenciar isso tudo.
Faça com que os métodos dela disparem Threads de confirmação, cadastro e recuperação.
Quando eu chegar em casa eu posto o trecho do código da minha cassete email service.
Mas nessa classe eu tenho os métodos que envia email de confirmação e cadastro e a thread só não é executada com oque está dentro do método run ()?
No caso cada método tem que ter uma classe com o método run () para clamar uma thread?
Cada Thread é uma instância diferente, mas você não precisa criar classes externas pra isso, você pode usar classes internas, classes anônimas ou expressões lâmbda.
Exemplo:
public class MinhaClasse {
public void meuMetodoAssincrono() {
new Thread(() -> fazUmaCoisa()).start();
}
public void outroMetodoAssincrono() {
new Thread(() -> fazOutraCoisa()).start();
}
public void maisUmMetodoAssincrono() {
new Thread(() -> fazMaisOutraCoisa()).start();
}
private void fazUmaCoisa() {
// Aqui faz uma coisa
}
private void fazOutraCoisa() {
// Aqui faz outra coisa
}
private void fazMaisOutraCoisa() {
// Aqui faz mais outra coisa
}
}
No caso seria a MESMA thread executando diferentes métodos ou cada método seriam threads DIFERENTES? Pergunto pq gostaria de saber, como posso implementar num servidor RMI, uma thread para cada usuário conectado, ou seja, cada cliente que conectar seja criada uma thread para o mesmo, e então de acordo com as necessidades do cliente (alterar, excluir…) eu possa executar as threads no servidor.