gpt4 book ai didi

java - 使用线程发送邮件但仍然挂起 Java 中的应用程序

转载 作者:行者123 更新时间:2023-12-01 17:03:16 25 4
gpt4 key购买 nike

我开发了一个发送电子邮件的应用程序。最初,应用程序在发送邮件期间挂起,因此我想到通过 Thread 发送邮件,但即使使用 Thread 发送邮件,我的应用程序在发送电子邮件时仍然挂起。

更新

我已经更新了我的代码,但现在使用 join() 时仍然存在同样的问题。

这是我的代码(我缩短了代码以便于理解我的线程实现)

boolean wasMailSent = false;
public void sendMyMail()
{
Thread sendEmail = new Thread(new sendMail("abc@xyz.com"));
sendEmail.start();
Thread confirmIt = new Thread(new confirmMailSent());
sendEmail.start();
try
{
sendEmail.join();
}
catch(Exception e){}
confirmIt.start();
}

public class sendMail implements Runnable
{
String sendTo;
public sendMail(String sendTo)
{
this.sentTo = sendTo;
}
public void run()
{
//Code to send mail
wasMailSent=true;
}
}

public class confirmMailSent implements Runnable
{
public void run()
{
if(wasMailSent)
{
feedbackText.setText(null);
feedbackName.setText(null);
JOptionPane.showMessageDialog(null, "Mail was sent successfully.", "Mail Sending", JOptionPane.INFORMATION_MESSAGE);
}
}
}

最佳答案

这是因为您发送邮件的代码位于 sendMail 构造函数中。它根本没有在您的新线程上运行。当您执行 new sendMail() 时,它会立即在您的调用线程上运行(之后您的线程启动并且不执行任何操作,实际上,因为 run() 为空)。您希望该代码位于 run() 中,它在新线程上执行,而不是在构造函数中。

顺便说一下,传统上类名以大写字母开头,而不是小写字母。它使它们易于区分(并且不会混淆 SO 的语法荧光笔)。

关于java - 使用线程发送邮件但仍然挂起 Java 中的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26595952/

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