带有多线程的Javax邮件

时间:2013-09-30 06:57:10

标签: java imap smpp javax.mail

我正在开发一个java应用程序,它使用attachemnts获取并保存所有邮件。但我想做多线程。我的想法就是这样。

一个计时器线程正在获取所有邮件并将它们放入BlockingQueue.I我将Javax.mail.Message对象放入队列。然后我的工作线程正在处理它们。

问题是当工作线程正在接收Message并调用方法时:

Message.getFolder.open();

Message.getFolder.close();

导致问题。如果一个线程打开文件夹而另一个线程尝试打开同一个文件夹,则应用程序正在抛出不允许操作异常。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

在打开之前尝试Folder.isOpen() - Indicates whether this Folder is in the 'open' state.,例如

Folder folder = Message.getFolder();

if(folder.isOpen()==false){
folder.open();
}

同样在关闭之前,检查它是否已经打开然后只关闭:

  if(folder.isOpen()){
    folder.close();
  }