Salut
J'utilise javamail 1.4.1.
Pour resumer, j'ai un thread responsable de télécharger des mails(en mode polling) et puis les dispatcher vers un pool de thread pour traiter chaque mail à part(j'utilise le framework ExecutorService pour créer pool de thread).
Le probleme est aprés un certain moment,le thread responsable de la connexion POP3 est bloqué et en traitant son etat (à l'aide jconsole),je trouve cet état:
Dans mon code ,l'instruction Pop3receiverService.java:299 pointe sur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Name: POP3Connector-1 State: BLOCKED on com.sun.mail.pop3.POP3Message@16af96c owned by: ReceiverThread-16 Total blocked: 23 Total waited: 1 694 Stack trace: javax.mail.internet.MimeMessage.isSet(MimeMessage.java:1993) com.sun.mail.pop3.POP3Folder.close(POP3Folder.java:246) - locked com.sun.mail.pop3.POP3Folder@15e421c mypackage.Pop3receiverService.doConnect(Pop3receiverService.java:299) mypackage.Pop3receiverService$1.run(Pop3receiverService.java:124) java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317) java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150) java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98) java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181) java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205) java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) java.lang.Thread.run(Thread.java:619)
j'ai mis cet instruction entre try...catch et j'ai affiché un message avant et aprés l'instruction et il s’avère que mon thread reste bloqué à cette instruction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part folder.close(true);
Est ce quelqu'un peut m'aider et m'explique pourquoi ce blocage?
Partager