Log4j est en train de suspendre mon application, qu'est-ce que je fais de mal?

Tout d'abord quelques informations sur l'application. J'ai une application de traitement de plusieurs tâches en parallèle via un pool de threads. Le pool de threads est maintenant suspendu.

Voici un extrait de mon fils décharges, tous mes Fils dans la piscine-2 sont BLOQUÉS par des "piscine-2-thread-78". Il semble être verrouillé en essayant d'écrire dans la console que je trouve extrêmement bizarre. Quelqu'un peut nous donner un indice sur la situation pour moi?

MODIFIER:
Plate-forme de détails
java version "1.6.0_07"
Java(TM) SE Runtime Environment (build 1.6.0_07-b06)
Java HotSpot(TM) Client VM (build 10.0-b23, en mode mixte, partage)

Ubuntu serveur Linux en dual quad core de la machine.

Il semble de verrouillage lors de l'écriture de la printstream, j'ai envisagé de retirer la console appender cependant je voudrais plutôt savoir pourquoi il est le blocage et l'enlever en fonction de cette connaissance. Dans le passé, l'enlever et voir si elle fonctionne a revenir à la mords-moi 🙂

section pertinente de mon log4j

log4j.rootLogger=DEBUG, STDOUT
log4j.enregistreur.com.bla=INFO, JOURNAL
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.LOG=org.apache.log4j.FileAppender

Thread dump extrait

"piscine-2-thread-79" Id=149 BLOQUÉ sur
org.apache.log4j.spi.RootLogger@6c3ba437
la propriété de "la piscine-2-thread-78" Id=148 à
org.apache.log4j.De la catégorie.callAppenders(de la Catégorie.java:201)
au
org.apache.log4j.De la catégorie.forcedLog(de la Catégorie.java:388)
au
org.apache.log4j.De la catégorie.(erreur de Catégorie.java:302)
au
com.blah.MessageProcessTask.exécuter(MessageProcessTask.java:103)
au
java.util.de façon concomitante.Les Exécuteurs$RunnableAdapter.appelez le(les Exécuteurs.java:441)
au
java.util.de façon concomitante.FutureTask$De Synchronisation.innerRun(FutureTask/java:268)
au
java.util.de façon concomitante.FutureTask.exécuter(FutureTask/java:54)
au
java.util.de façon concomitante.ThreadPoolExecutor$Par Travailleur.runTask(ThreadPoolExecutor.java:885)
au
java.util.de façon concomitante.ThreadPoolExecutor$Par Travailleur.exécuter(ThreadPoolExecutor.java:907)
au
java.lang.Fil de discussion.exécution(Thread.java:619)

"piscine-2-thread-78" Id=148 EXÉCUTABLE à l'
java.io.FileOutputStream.writeBytes(Native
La méthode)
java.io.FileOutputStream.écrire(FileOutputStream.java:260)
au
java.io.BufferedOutputStream.écrire(BufferedOutputStream.java:105)
- verrouillé <0x6f314ba4> (java.io.BufferedOutputStream) à
java.io.PrintStream.écrire(PrintStream.java:430)
- verrouillé <0xd5d3504> (java.io.PrintStream) à
org.apache.log4j.ConsoleAppender$SystemOutStream.écrire(ConsoleAppender.java:173)
au
soleil.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:202)
au
soleil.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:272)
au
soleil.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:276)
au
soleil.nio.cs.StreamEncoder.flush(StreamEncoder.java:122)
- verrouillé <0x6243a076> (java.io.OutputStreamWriter) à
java.io.OutputStreamWriter.flush(OutputStreamWriter.java:212)
au
org.apache.log4j.les aides.QuietWriter.flush(QuietWriter.java:57)
au
org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:315)
au
org.apache.log4j.WriterAppender.append(WriterAppender.java:159)
au
org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:230)
- verrouillé <0x45dbd560> (org.apache.log4j.ConsoleAppender) à
org.apache.log4j.les aides.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:65)
au
org.apache.log4j.De la catégorie.callAppenders(de la Catégorie.java:203)
- verrouillé <0x6c3ba437> (org.apache.log4j.le spi.RootLogger) à
org.apache.log4j.De la catégorie.forcedLog(de la Catégorie.java:388)
au
org.apache.log4j.De la catégorie.(erreur de Catégorie.java:302)
au
com.blah.MessageProcessTask.exécuter(MessageProcessTask.java:103)
au
java.util.de façon concomitante.Les Exécuteurs$RunnableAdapter.appelez le(les Exécuteurs.java:441)
au
java.util.de façon concomitante.FutureTask$De Synchronisation.innerRun(FutureTask/java:268)
au
java.util.de façon concomitante.FutureTask.exécuter(FutureTask/java:54)
au
java.util.de façon concomitante.ThreadPoolExecutor$Par Travailleur.runTask(ThreadPoolExecutor.java:885)
au
java.util.de façon concomitante.ThreadPoolExecutor$Par Travailleur.exécuter(ThreadPoolExecutor.java:907)
au
java.lang.Fil de discussion.exécution(Thread.java:619)

source d'informationauteur Paul Whelan | 2009-03-11