2011-07-19 19 views
2

このプロセスは次のとおりです。
受信した特定の電子メールメッセージの確認要求が来ました。この電子メールメッセージは、定期的にメールサーバー上の可用性がチェックされているメッセージのリストに追加する必要があります。 30秒ごとに、別のスレッドがこのリストからメッセージを検索する必要があります。メッセージが見つかった場合、何らかの形で要求を行った関数に返す必要があります。指定されたタイムアウト期間中にメッセージが見つからない場合は、例外がスローされます。定期的にタイムアウトの状態を確認する

注:新しいメッセージが表示されるたびに新しいスレッドを作成するのは静かである可能性があります。ですから、リストからすべてのメッセージを1つのスレッドで定期的に検索したいのです。

どのように/どのクラスの助けを借りて実装できますか?あなたが受信スレッドはまったくCPUを使用していないので、poll(long timeout, TimeUnit unit)を言うことができるため、メッセージを受信するjava.util.concurrent.BlockingQueueを使用し

答えて

3
  1. (JavaMailの部分は準備ができています)。

  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秒ごとにメッセージのリストを取得し、それを検索 - リストスレッド用のキューに入れるタイマーを使用します。 –

関連する問題