gpt4 book ai didi

java - 线程启动不调用运行

转载 作者:搜寻专家 更新时间:2023-10-30 21:27:41 25 4
gpt4 key购买 nike

我被一个奇怪的问题搞糊涂了。基本上情况是这样的。我在我的类中实现了 runnable,我在一个新线程中传递了这个类,我在实现 runnable 的类中覆盖了我的 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
}

非常感谢任何指导!非常感谢!

最佳答案

你怎么知道这个方法从未被调用过?

下面的简单测试有效。所以创建一个线程并从构造函数中运行它是没有问题的。所以还有其他事情阻止您看到正在调用 sendEmail()

public class Test implements Runnable {
Thread runner;
public Test() {
this.runner = new Thread(this);
this.runner.start();
}

@Override
public void run() {
System.out.println("ya");
}

public static void main(String[] args) {
new Test();
}
}

关于java - 线程启动不调用运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11119156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com