java - 线程。继续使用相同的信息(运行时可变)

标签 java multithreading email

我用 JAVA 开发了一个 GUI,在执行了一些操作(例如写入 Excel)后,会向客户端发送一封带有附件的电子邮件,但发送电子邮件大约需要 5 秒,有时需要连续发送 100 封电子邮件,但我不知道用户不会等待电子邮件发送,因为这对他来说并不重要。 所以我尝试创建一个发送电子邮件的线程。类似于:

for(int i=0; i<numEmail;i++){
                info=getSomething(i);
        new Thread()
        {
            public void run() {
                sendEmail(info);
            System.out.println("Email sent");
            }
        }.start();
}

虽然我创建了新主题,但每封电子邮件都带有第一封电子邮件的信息,而不是每封电子邮件都带有不同的信息。

我是一名新手java程序员,对线程知之甚少。我只需要不卡住 GUI 来发送电子邮件。我从来没有发送过多少电子邮件,但它们都有不同的信息要发送。

最佳答案

您错过了几个大括号。线程始终以 i 的最后一个值运行。

for(int i=0; i<numEmail;i++){
info=getSomething(i);
        new Thread()
        {
            public void run() {
                sendEmail(info);
            System.out.println("Email sent");
            }
        }.start();
}

关于java - 线程。继续使用相同的信息(运行时可变),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22992046/

相关文章:

java - 如何为字段创建功能接口(interface)实现?

java - 如何通过 JavaMail 从 Yahoo 服务器发送电子邮件?

java - 在android studio中发送邮件

c - 接收电子邮件

java - Tolven 源代码到 Eclipse 项目结构

java - MyBatis 在一个查询中删除-插入-更新

java - 进度条中形状的填充

javascript - 等待变量存在然后在 javascript 中执行某些操作

java - AWT 中的 Java 线程池和 Java EventQueue 背后的概念是否有相似之处?

java - 在调用查询此持久化实体的另一个线程之前,如何确保实体已持久化?