java - 如何在 GWT 中执行多线程?

标签 java gwt

我有一个相当标准的 GWT 表单,它执行从注册表单中获取数据并将其存储在数据库中的基本功能。

authenticationService.registerStudent(email, password, firstName, lastName, contact,
            country, countryCode, school, lecturerFirstName, lecturerLastName,
            lecturerEmail, language, new AsyncCallback<Boolean>() {

        @Override
        public void onFailure(Throwable throwable) {

        }

        @Override
        public void onSuccess(Boolean bool) {

        }
    });

在服务器端,我有一个将数据存储到数据库中的 servlet。

public class AuthenticationServiceImpl extends RemoteServiceServlet implements AuthenticationService {

@Override
public Boolean registerStudent(String email, String password, String firstName, String lastName,
                               String contact, String country, String countryCode, String school,
                               String lecturerFirstName, String lecturerLastName, String lecturerEmail,
                               String language) throws IllegalArgumentException {

    ....

    }
}

我想向要求他确认帐户的人发送一封确认电子邮件。在 registerStudent() 函数中实现电子邮件逻辑的问题是,与 SMTP 服务器通信可能需要一段时间,这将导致客户端无响应。

如何将发送电子邮件功能“委托(delegate)”给另一个类/函数,同时在成功插入数据库后能够从 registerStudent() 函数返回 true ?我认为需要某种形式的多线程,但我不确定如何去做。

最佳答案

AuthenticationServiceImpl 是一个 GWT Servlet,这里对任何 Java 库的使用没有限制。您可以创建一个 Runnable 并将其传递给 Thread 并调用 start() 以便它并行发送邮件。 runnable 的 run() 方法应该具有发送电子邮件的逻辑。

您可以查看更多有关多线程的文档和示例 here

关于java - 如何在 GWT 中执行多线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17906465/

相关文章:

java - 无法运行GWT项目

javascript - GWT HTTP 响应 getText() 作为二进制

java - HibernateUtil 与 JPA

java - 如何向现有的 gwt 文本框添加工具提示?

java - 是否需要到处设置分区号? Spark

java - 代码的时间复杂度取决于循环还是操作次数?

java - 不打印堆栈中输入的第一个节点(toString)

css - gwt 中建议框的滚动错误

java - 对类型删除和桥接方法感到困惑

java - 在 Java 中提取字符串的前两个字符