java.lang.Thread.State: BLOCKED - PullRequest
       1

java.lang.Thread.State: BLOCKED

2 голосов
/ 09 марта 2011

У меня есть приложение, которое иногда зависает без каких-либо ошибок в консоли. Я сделал jstack, но я не могу понять, что происходит и как решить эту плохую ситуацию: (

Можете ли вы помочь мне? Это вывод jstack:

    2011-03-09 00:20:26
Full thread dump Java HotSpot(TM) Client VM (19.1-b02 mixed mode, sharing):

"Java Sound Event Dispatcher" daemon prio=6 tid=0x083ce800 nid=0x6cc in Object.wait() [0x0cd1f000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:485)
    at com.sun.media.sound.EventDispatcher.dispatchEvents(Unknown Source)
    - locked <0x29d4b458> (a com.sun.media.sound.EventDispatcher)
    at com.sun.media.sound.EventDispatcher.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

   Locked ownable synchronizers:
    - None

"Smack Listener Processor (1)" daemon prio=6 tid=0x083cd000 nid=0x13b8 in Object.wait() [0x0b9ef000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:485)
    at javax.swing.text.AbstractDocument.readLock(Unknown Source)
    - locked <0x29d7ca80> (a javax.swing.text.PlainDocument)
    at javax.swing.plaf.basic.BasicTextUI.getMinimumSize(Unknown Source)
    at javax.swing.JComponent.getMinimumSize(Unknown Source)
    at java.awt.GridBagLayout.GetLayoutInfo(Unknown Source)
    - locked <0x29bb0ed0> (a java.awt.Component$AWTTreeLock)
    at java.awt.GridBagLayout.getLayoutInfo(Unknown Source)
    at java.awt.GridBagLayout.minimumLayoutSize(Unknown Source)
    at java.awt.Container.minimumSize(Unknown Source)
    - locked <0x29bb0ed0> (a java.awt.Component$AWTTreeLock)
    at java.awt.Container.getMinimumSize(Unknown Source)
    at javax.swing.JComponent.getMinimumSize(Unknown Source)
    at javax.swing.BoxLayout.checkRequests(Unknown Source)
    at javax.swing.BoxLayout.layoutContainer(Unknown Source)
    - locked <0x29d84878> (a javax.swing.BoxLayout)
    at javax.swing.JToolBar$DefaultToolBarLayout.layoutContainer(Unknown Source)
    at java.awt.Container.layout(Unknown Source)
    at java.awt.Container.doLayout(Unknown Source)
    at java.awt.Container.validateTree(Unknown Source)
    at java.awt.Container.validateTree(Unknown Source)
    at java.awt.Container.validateTree(Unknown Source)
    at java.awt.Container.validateTree(Unknown Source)
    at java.awt.Container.validateTree(Unknown Source)
    at java.awt.Container.validateTree(Unknown Source)
    at java.awt.Container.validateTree(Unknown Source)
    at java.awt.Container.validateTree(Unknown Source)
    at java.awt.Container.validate(Unknown Source)
    - locked <0x29bb0ed0> (a java.awt.Component$AWTTreeLock)
    at java.awt.Window.show(Unknown Source)
    at java.awt.Component.show(Unknown Source)
    at java.awt.Component.setVisible(Unknown Source)
    at java.awt.Window.setVisible(Unknown Source)
    at org.sampei.asdbook.UserWindow.setUserPanel(UserWindow.java:144)
    at org.sampei.asdbook.AsdBook.propertyChange(AsdBook.java:382)
    at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)
    at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)
    at org.sampei.asdbook.Xmpp$1.processPacket(Xmpp.java:80)
    at org.jivesoftware.smack.PacketReader$ListenerWrapper.notifyListener(PacketReader.java:819)
    at org.jivesoftware.smack.PacketReader$ListenerNotification.run(PacketReader.java:799)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

   Locked ownable synchronizers:
    - <0x29cb54b0> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)

"Smack Keep Alive (1)" daemon prio=6 tid=0x083ccc00 nid=0x1b58 waiting on condition [0x0b89f000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
    at java.lang.Thread.sleep(Native Method)
    at org.jivesoftware.smack.PacketWriter$KeepAliveTask.run(PacketWriter.java:451)
    at java.lang.Thread.run(Unknown Source)

   Locked ownable synchronizers:
    - None

"Smack Packet Reader (1)" daemon prio=6 tid=0x083ca000 nid=0x1b64 runnable [0x0ac6f000]
   java.lang.Thread.State: RUNNABLE
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(Unknown Source)
    at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
    at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
    at sun.nio.cs.StreamDecoder.read(Unknown Source)
    - locked <0x29c7ebf0> (a java.io.InputStreamReader)
    at java.io.InputStreamReader.read(Unknown Source)
    at java.io.BufferedReader.fill(Unknown Source)
    at java.io.BufferedReader.read1(Unknown Source)
    at java.io.BufferedReader.read(Unknown Source)
    - locked <0x29c7ebf0> (a java.io.InputStreamReader)
    at org.xmlpull.mxp1.MXParser.fillBuf(MXParser.java:2992)
    at org.xmlpull.mxp1.MXParser.more(MXParser.java:3046)
    at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1144)
    at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093)
    at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:368)
    at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:44)
    at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:76)

   Locked ownable synchronizers:
    - None

"Smack Packet Writer (1)" daemon prio=6 tid=0x083cc400 nid=0xb40 in Object.wait() [0x0a9ef000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:485)
    at org.jivesoftware.smack.PacketWriter.nextPacket(PacketWriter.java:239)
    - locked <0x29c82dc8> (a java.util.concurrent.ArrayBlockingQueue)
    at org.jivesoftware.smack.PacketWriter.writePackets(PacketWriter.java:255)
    at org.jivesoftware.smack.PacketWriter.access$000(PacketWriter.java:40)
    at org.jivesoftware.smack.PacketWriter$1.run(PacketWriter.java:87)

   Locked ownable synchronizers:
    - None

"SwingWorker-pool-1-thread-2" daemon prio=6 tid=0x083ca800 nid=0x438 waiting on condition [0x09ecf000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x29c83060> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(Unknown Source)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
    at java.util.concurrent.LinkedBlockingQueue.take(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

   Locked ownable synchronizers:
    - None

"SwingWorker-pool-1-thread-1" daemon prio=6 tid=0x083c7800 nid=0x1ac0 waiting on condition [0x0802f000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x29c83060> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(Unknown Source)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
    at java.util.concurrent.LinkedBlockingQueue.take(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

   Locked ownable synchronizers:
    - None

"TimerQueue" daemon prio=6 tid=0x083c9000 nid=0x1010 in Object.wait() [0x0a0ff000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at javax.swing.TimerQueue.run(Unknown Source)
    - locked <0x29c831b8> (a javax.swing.TimerQueue)
    at java.lang.Thread.run(Unknown Source)

   Locked ownable synchronizers:
    - None

"D3D Screen Updater" daemon prio=8 tid=0x083c8400 nid=0x5a4 in Object.wait() [0x003cf000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at sun.java2d.d3d.D3DScreenUpdateManager.run(Unknown Source)
    - locked <0x29ba4860> (a java.lang.Object)
    at java.lang.Thread.run(Unknown Source)

   Locked ownable synchronizers:
    - None

"Mozilla" daemon prio=6 tid=0x053c5400 nid=0x9f0 runnable [0x085af000]
   java.lang.Thread.State: RUNNABLE
    at org.mozilla.xpcom.internal.XPCOMJavaProxy.callXPCOMMethod(Native Method)
    at org.mozilla.xpcom.internal.XPCOMJavaProxy.invoke(XPCOMJavaProxy.java:143)
    at $Proxy5.run(Unknown Source)
    at org.mozilla.browser.MozillaExecutor$1.run(MozillaExecutor.java:206)

   Locked ownable synchronizers:
    - None

"DestroyJavaVM" prio=6 tid=0x02418800 nid=0x1770 waiting on condition [0x00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"AWT-EventQueue-0" prio=6 tid=0x052a7800 nid=0x15d4 waiting for monitor entry [0x057be000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at java.awt.Component.invalidate(Unknown Source)
    - waiting to lock <0x29bb0ed0> (a java.awt.Component$AWTTreeLock)
    at java.awt.Container.invalidate(Unknown Source)
    at javax.swing.JComponent.revalidate(Unknown Source)
    at javax.swing.plaf.basic.BasicTextUI$RootView.preferenceChanged(Unknown Source)
    at javax.swing.text.View.preferenceChanged(Unknown Source)
    at javax.swing.text.PlainView.updateDamage(Unknown Source)
    at javax.swing.text.PlainView.removeUpdate(Unknown Source)
    at javax.swing.text.FieldView.removeUpdate(Unknown Source)
    at javax.swing.plaf.basic.BasicTextUI$RootView.removeUpdate(Unknown Source)
    at javax.swing.plaf.basic.BasicTextUI$UpdateHandler.removeUpdate(Unknown Source)
    at javax.swing.text.AbstractDocument.fireRemoveUpdate(Unknown Source)
    at javax.swing.text.AbstractDocument.handleRemove(Unknown Source)
    at javax.swing.text.AbstractDocument.remove(Unknown Source)
    at javax.swing.text.AbstractDocument.replace(Unknown Source)
    at javax.swing.text.JTextComponent.setText(Unknown Source)
    at org.mozilla.browser.MozillaPanel.onSetUrlbarText(MozillaPanel.java:457)
    at org.mozilla.browser.impl.ProgressAdapter$1.run(ProgressAdapter.java:31)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

   Locked ownable synchronizers:
    - None

"AWT-Windows" daemon prio=6 tid=0x052a6800 nid=0x18b8 runnable [0x0572f000]
   java.lang.Thread.State: RUNNABLE
    at sun.awt.windows.WToolkit.eventLoop(Native Method)
    at sun.awt.windows.WToolkit.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

   Locked ownable synchronizers:
    - None

"AWT-Shutdown" prio=6 tid=0x052a6400 nid=0x938 in Object.wait() [0x0569f000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:485)
    at sun.awt.AWTAutoShutdown.run(Unknown Source)
    - locked <0x29ba5058> (a java.lang.Object)
    at java.lang.Thread.run(Unknown Source)

   Locked ownable synchronizers:
    - None

"Java2D Disposer" daemon prio=10 tid=0x052a3c00 nid=0x1968 in Object.wait() [0x0560f000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.ref.ReferenceQueue.remove(Unknown Source)
    - locked <0x29ba50f0> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(Unknown Source)
    at sun.java2d.Disposer.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

   Locked ownable synchronizers:
    - None

"Low Memory Detector" daemon prio=6 tid=0x024c0400 nid=0x192c runnable [0x00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"CompilerThread0" daemon prio=10 tid=0x024bb400 nid=0x1a0c waiting on condition [0x00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"Attach Listener" daemon prio=10 tid=0x024b8400 nid=0x1bd0 waiting on condition [0x00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"Signal Dispatcher" daemon prio=10 tid=0x024b5400 nid=0x1e0 runnable [0x00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"Finalizer" daemon prio=8 tid=0x024af000 nid=0x77c in Object.wait() [0x04dff000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.ref.ReferenceQueue.remove(Unknown Source)
    - locked <0x29ba5348> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(Unknown Source)
    at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)

   Locked ownable synchronizers:
    - None

"Reference Handler" daemon prio=10 tid=0x024ad000 nid=0x948 in Object.wait() [0x04d6f000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:485)
    at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)
    - locked <0x29ba4900> (a java.lang.ref.Reference$Lock)

   Locked ownable synchronizers:
    - None

"VM Thread" prio=10 tid=0x02471400 nid=0x10c4 runnable 

"VM Periodic Task Thread" prio=10 tid=0x024d3c00 nid=0x193c waiting on condition 

JNI global references: 3767

Ответы [ 2 ]

10 голосов
/ 09 марта 2011

Похоже, вы выполняете операции Swing / AWT в потоке прослушивателя Smack. Swing не является поточно-ориентированным, поэтому вам необходимо выполнить все операции Swing в потоке AWT-EventQueue-0.

Эта строка, вероятно, ваш виновник:

at org.sampei.asdbook.UserWindow.setUserPanel(UserWindow.java:144)

Вам нужно вызвать SwingUtilities.invokeLater() или SwingUtilities.invokeAndWait() - предпочтительно первый.

2 голосов
/ 09 марта 2011

Вы используете Java 6 или новее? Если это так, то вы можете запустить jconsole и проверить приложение на наличие заблокированных потоков.

Одна проблема, которую я вижу здесь, заключается в том, что, по-видимому, у вас есть по крайней мере один поток не-пользовательского интерфейса («Smack Listener Processor (1)»), который обращается к компонентам пользовательского интерфейса. Помните, что Swing не является поточно-ориентированным, и странные вещи начинают происходить, когда вы обращаетесь к компонентам Swing из потока диспетчеризации событий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...