Threadsafety in Javamail
2022-09-01 15:02:10
我正在研究Javamail是否是线程安全的,特别是在与不同用户对应的许多会话,几个SMTP服务器以及使用创建MIME消息和使用方法的情况下。我知道Javamail是面向桌面使用的,这让我怀疑它可能不是在考虑线程的情况下构建的,我想知道是否有人有这样的经验。transport.sendMessage
我正在研究Javamail是否是线程安全的,特别是在与不同用户对应的许多会话,几个SMTP服务器以及使用创建MIME消息和使用方法的情况下。我知道Javamail是面向桌面使用的,这让我怀疑它可能不是在考虑线程的情况下构建的,我想知道是否有人有这样的经验。transport.sendMessage
诚然,JavaMail的线程安全规则没有得到很好的记录,但希望它们大多符合您的期望。
多个线程可以使用一个会话。
由于传输表示与邮件服务器的连接,并且一次只有一个线程可以使用该连接,因此传输将同步来自多个线程的访问以保持线程安全,但您实际上只想从单个线程使用它。
同样,存储区可由多个线程使用,但对基础连接的访问将同步和单线程。
一条消息一次只能由一个线程修改,但多个线程应该能够安全地读取消息(尽管不清楚为什么要这样做)。
希望有所帮助...
如果服务器没有及时响应,javamail调度程序线程似乎不会超时。这会导致锁定所有可用线程。
已在 1.4.3 和 1.4.5 中测试此行为。