私は奇妙な問題に困惑しています。基本的にはこのような状況です。クラスにランナブルを実装し、クラスを新しいスレッドに渡し、ランナブルを実装するrun()
クラス内でメソッドをオーバーライドしてから、スレッドを開始します。ただし、私のstart()
メソッドが私のメソッドを呼び出すことはありませんrun()
。フォーラムを検索しましたが、別の同様の問題が見つからないようです。
以下は私のサンプルコードです:
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
}
ガイダンスをいただければ幸いです。ありがとうございます!