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

前端之家收集整理的这篇文章主要介绍了在Java中的不同线程中运行后台进程前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写一个应用程序,用户可以添加删除其他用户作为朋友.
我的页面有一个不同的用户列表,每个用户都有一个按钮,将它们添加到朋友列表中.
我发送一个 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();
原文链接:https://www.f2er.com/java/122881.html

猜你在找的Java相关文章