Exécuter le processus d'arrière-plan dans un thread différent en Java

Je suis en train d'écrire une application où l'utilisateur peut ajouter et supprimer d'autres utilisateurs comme des amis.
Ma page a une liste de diffrent utilisateurs et est attribué à chaque utilisateur avec un bouton pour les ajouter dans votre liste d'amis.
Je suis de l'envoi d'une requête AJAX Java servlet pour ajouter l'utilisateur sélectionné comme un ami.
Je suis en train de montrer message d'alerte à l'INTERFACE utilisateur pour afficher le résultat de processus.

Mon problème est que j'ai envoyé un mail lorsqu'un utilisateur est ajouté comme ami ce code est écrit dans la même méthode dans la servlet.

À cause de ce bout de code de mon message d'alerte arrive très tard.

J'ai besoin d'exécuter un distinct pthread pour exécuter cette fonction mail de sorte que lorsque l'utilisateur est ajouté-je obtenir le résultat et le mail sera envoyer dans un processus séparé.

Mon code de la Servlet est

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(),
            "[email protected]", "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.";
    }
}

source d'informationauteur viredra-agarwal | 2010-01-20