2011-07-19 51 views
2

處理過程如下:
請求檢查收到的特定電子郵件。此電子郵件消息應添加到定期檢查郵件服務器上的可用性的郵件列表中。每隔30秒,另一個線程應該搜索來自該列表的消息。如果發現消息,應該以某種方式返回以發出請求的功能。如果在指定的超時期限內未找到消息,則應引發異常。定期檢查超時狀態

注:我認爲每次新消息出現時創建新線程可能會很安靜。所以我想定期在一個線程中搜索列表中的所有消息。

如何/在哪些類的幫助下我可以實現它? (JavaMail的部分也準備好)

回答

3
  1. 使用java.util.concurrent.BlockingQueue接收消息,因爲你可以說poll(long timeout, TimeUnit unit)所以接收線程不使用任何CPU在所有。

  2. 要定期檢查郵件,請使用java.util.Timer「以定期重複執行」。

+3

雖然你應該檢查優先於定時器的ExecutorService的界面,看到http://stackoverflow.com/questions/409932/java-timer-vs-executorservice – ptomli

+0

1.不僅如此提出的要求,但也發新話題執行搜索的應該知道超時到期。當使用執行搜索的指定超時線程的'poll'時,將不知道該超時已到期。 2.某些功能可以發送他們正在等待消息的請求。當使用'scheduleAtFixedRate'方法時,每個搜索消息將獨立於其他搜索執行。我更喜歡每30秒檢索一次郵件列表,然後在列表中搜索列表中正在等待的所有郵件。 –

+0

1.使用相同的模式:在搜索線程中,等待輪詢線程最終放置搜索結果的隊列。 2.使用一個定時器,每30秒檢索一次消息列表,並將其放入一個搜索列表線程的隊列中。 –