簡體   English   中英

如何使用多線程從Gmail服務器獲取郵件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM