Javamail中的Threadsafety

dje*_*lin 26 java multithreading smtp jakarta-mail

我正在研究Javamail是否是线程安全的,特别是在具有与不同用户相对应的许多会话,多个SMTP服务器以及创建MIME消息和使用transport.sendMessage方法的情况下.我知道Javamail面向桌面使用,这让我怀疑它可能没有考虑到线程构建,我想知道是否有人有这样的经验.

Bil*_*non 67

不可否认,JavaMail的线程安全规则没有很好地记录,但希望它们大多符合您的预期.

多个线程可以使用Session.

由于交通运输仅代表单个线程到邮件服务器的连接,并且可以使用在同一时间连接,传输将同步从多个线程访问,以保持线程安全的,但你真的只想从一个单一的使用线.

类似地,多个线程可以使用Store,但是对底层连接的访问​​将是同步的并且是单线程的.

消息一次只能由一个线程修改,但多个线程应该能够安全地读取消息(尽管不清楚为什么要这样做).

希望有帮助......

  • 我写了很多代码,并且保留了所有代码. (39认同)
  • 你很好地回答了这么多JavaMail问题而不关心声誉.你是一个真正的无名英雄! (3认同)
  • 这取决于.每个打开的文件夹使用单个连接,并且连接上的操作必须是单线程的.您可以多次打开该文件夹; 这有助于取决于服务器.当然,如果你在多个文件夹上运行,它可能会有助于使用多个线程. (3认同)
  • 奖励!由于没有参考支持你的解释,我想知道你如何如此自信.现在我明白了;)显然,+1! (2认同)