0

我的用户帐户创建方法如下,

      public String saveAccountInfo(User user) {

    if(null != user){
        userService.addUser(user);
        mailService.sendActivationEmail(user);
    }

    return "redirect:/greeting.html";
}

当用户提交帐户创建表单时,直到“sendActivationEmail”成功发送电子邮件后才显示greeting.html。sendActivationEmail 需要更长的时间,因此用户需要很长时间才能看到问候页面。我怎样才能触发此方法并允许流程完成?

4

3 回答 3

1

您必须开始一个新线程并从新线程中发送电子邮件。

这几乎是在 Java 中实现异步处理的唯一方法。

于 2013-01-29T11:55:46.833 回答
0

发送激活邮件的任务可以由另一个线程完成。这将允许您显示问候页面。

if(null != user)
{
    userService.addUser(user);

    Thread mailSenderThread = new Thread(new Runnable()
    {
        public void run()
        {
            mailService.sendActivationEmail(user);
        }
    });
    mailSenderThread.start();
}

可以做这样的事情。

于 2013-01-29T12:02:27.633 回答
0

这就是我的做法,

     public String saveAccountInfo(final User user) {

    if(null != user){
        user.setActivationKey(generateRandomKey());
        userService.addUser(user);
        new Thread(new Runnable(){
            @Override
            public void run() {
                mailService.sendActivationEmail(user);                  
            }               
        }).start();
    }       
    return "redirect:/greeting.html";
}
于 2013-01-29T18:20:43.293 回答