2016-10-03 83 views
0

我在使用javax.mail API從Gmail服務器獲取電子郵件時遇到問題。我必須使用5個線程每次獲取5封郵件。請幫幫我。如何使用多線程從Gmail服務器獲取郵件?

folder = (IMAPFolder) store.getFolder(m_StrfolderName); 
folder.open(Folder.READ_WRITE); 
Message []messages = folder.getMessages(); 
+0

請在發佈之前先格式化代碼。按照鏈接如何格式化,http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks –

回答

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)不會讓你這樣做。

但是,這裏有一個問題給你。實際上是否需要並行獲取電子郵件,或者是否需要並行處理它們? (代碼中的瓶頸在哪裏?抓取或處理?)

相關問題