[英]How to get mails from Gmail server using multithreading?
我使用javax.mail API從Gmail服務器獲取電子郵件時遇到問題。 我必須使用5個線程一次獲取5個郵件。 請幫我。
folder = (IMAPFolder) store.getFolder(m_StrfolderName);
folder.open(Folder.READ_WRITE);
Message []messages = folder.getMessages();
而不是這樣做:
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)不允許您這樣做。
但這是一個問題。 實際需要並行獲取電子郵件,還是並行處理就足夠了? (代碼的瓶頸在哪里?獲取還是處理?)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.