我在使用javax.mail API从Gmail服务器收到电子邮件时遇到问题。我必须使用5个线程一次获取5封邮件。请帮帮我。
folder = (IMAPFolder) store.getFolder(m_StrfolderName);
folder.open(Folder.READ_WRITE);
Message []messages = folder.getMessages();
答案 0 :(得分:1)
而不是这样做:
Message[] messages = folder.getMessages();
你可以(理论上)这样做:
final int count = folder.getMessageCount();
// in multiple threads
for (int i /* in a subset of [0 .. count - 1] */) {
Message message = folder.getMessage(i);
// process it
}
但是,我不认为这会并行获取消息。问题是当getMessage(int)
与IMAP服务器通信时,它在文件夹上保存本地锁(缓存锁)。这实际上意味着将一次提取一条消息。
我想您可以尝试在邮箱中打开多个IMAP会话,但我怀疑远程IMAP服务器(gmail)不会让您这样做。
但这是给你的问题。实际上是否需要并行获取电子邮件消息,或者并行处理它们是否足够? (代码中的瓶颈在哪里?提取或处理?)