2011-07-19 47 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秒检索一次消息列表,并将其放入一个搜索列表线程的队列中。 –