Estoy confundido con un problema extraño. Básicamente, la situación es así. Implementé el ejecutable en mi clase, paso la clase en un nuevo hilo, anulo mi método run()
dentro de la clase que implementa el ejecutable y luego comienzo el hilo. Sin embargo, mi método start()
nunca llama a mi método run()
. He buscado en los foros pero parece que no puedo encontrar otro problema similar.thread start no ejecuta run
A continuación es mi código de ejemplo:
public class EmailManager implements Runnable {
PortalManagementSBLocal pmbr= this.lookupPortalManagementSB();
Thread runner;
String emailServerName = "";
String smtpPort = "";
String emailTo = "";
String emailFrom = "";
String mailer = "JavaMailer";
String subject = "";
String message = "";
public EmailManager() {
}//default constructor
public EmailManager(String emailTo, String subject, String message){
this.emailTo=emailTo;
this.subject = subject;
this.message = message;
//need to make this dynamic
this.emailFrom = pmbr.getEmailFrom();
this.emailServerName = pmbr.getEmailServerName();
this.smtpPort = pmbr.getEmailSMTPPort();
//runner = new Thread(this,"Email");
runner = new Thread(this);
runner.start();
System.out.println("***** Email Thread running...");
}
@Override
public void run(){
sendEmail(); //This is never called
}
Realmente agradecería cualquier orientación! ¡Gracias una tonelada!
¿Y está seguro de que se está llamando a start()? ¿Puedes agregar un mensaje de registro al inicio de run() antes de llamar a sendMail()? –
¿Está construyendo el tipo derivado de EmailManager? –
Diseño repugnante, crear instancias del hilo y comenzarlo en el constructor. Casi seguro que generará condiciones de carrera. – Qwerky