加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

在Java中的不同线程中运行后台进程

发布时间:2020-12-14 05:20:35 所属栏目:Java 来源:网络整理
导读:我正在编写一个应用程序,用户可以添加和删除其他用户作为朋友. 我的页面有一个不同的用户列表,每个用户都有一个按钮,将它们添加到朋友列表中. 我发送一个 AJAX请求给 Java servlet,将所选用户添加为朋友. 我在UI上显示警告信息以显示进程的结果. 我的问题是,
我正在编写一个应用程序,用户可以添加和删除其他用户作为朋友.
我的页面有一个不同的用户列表,每个用户都有一个按钮,将它们添加到朋友列表中.
我发送一个 AJAX请求给 Java servlet,将所选用户添加为朋友.
我在UI上显示警告信息以显示进程的结果.

我的问题是,当用户被添加为朋友时,我必须发送一个邮件,该代码使用相同的方法写在servlet中.

因为这段代码,我的警报消息很晚.

我需要运行一个单独的pthread来运行这个发送邮件功能,以便一旦添加了用户,我将得到结果,邮件将被单独发送.

我在Servlet中的代码是

private void sendMail(long inviteeID) {
    User inviteeUser = null;
    try {
        inviteeUser = userHandler.getUser(inviteeID);
    } catch (DataException e) {
        sLog.error("User does not exist.",e);
    } catch (UserNotFoundException e) {
        sLog.error("User does not exist.",e);
    }
    MailUtility.send(inviteeUser.getUserEmailAddress().trim(),"vagarwal@q3tech.com","add friend message",Utility
                    .getAddFriendMessageBody(LoginHelper
                            .getLoggedInUserEmail()),false);
}



private String inviteAsFriend(long inviteeID) {

    boolean result = false;

    if (LoginHelper.isUserLoggedIn()) {
        try {
            User user = userHandler.findUserByEmail(LoginHelper
                    .getLoggedInUserEmail());

            if (userHandler.isUserFriend(user.getUserId(),inviteeID)) {

                if (userHandler.addFriend(user,inviteeID)) {

                    result = true;
                    return "Member added successfully as your friend.";
                } else {

                    return "Member could not be added as your friend. Please try again later.";
                }

            } else {

                return "Member is already your friend.";
            }

        } catch (DataException e) {

            return "User does not exist.";
        } catch (UserNotFoundException e) {

            return "User does not exist.";
        } catch (Exception e) {

            return "Member could not be added as your friend. Please try again later.";
        } finally {
            if (result) {
                sendMail(inviteeID);
            }
        }
    } else {
        return "User not logged in.";
    }
}

解决方法

我不知道这是什么问题.发送电子邮件不是那么昂贵的操作 – 它只是通知SMTP服务器邮件应该被发送,并且SMTP服务器从那里照顾.

不过,您可以尝试:

new Thread(new Runnable() {
    public void run() {
        MailUtility.send(inviteeUser.getUserEmailAddress().trim(),false);
    }
}).start();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读