我正在开发一个java应用程序,它使用attachemnts获取并保存所有邮件。但我想做多线程。我的想法就是这样。
一个计时器线程正在获取所有邮件并将它们放入BlockingQueue.I我将Javax.mail.Message
对象放入队列。然后我的工作线程正在处理它们。
问题是当工作线程正在接收Message并调用方法时:
Message.getFolder.open();
Message.getFolder.close();
导致问题。如果一个线程打开文件夹而另一个线程尝试打开同一个文件夹,则应用程序正在抛出不允许操作异常。
有人可以帮助我吗?
答案 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();
}