java - Whether a thread in WAITING state can be in indefinite waiting -


We have a multi-threaded Java based carba server application and receive notification being sent through one of the other applications in the thread to be responsible for corruption

the problem is that notifications are not being processed information through the responsible application to send

I used to dump many threads Jestak Has taken and the following threads I have seen the same waiting condition in all the gestacks. I know that the first thread that is a worker thread created by VC Broker will indicate the second thread (Notification Consumer Yarn). But my suspicion is the first thread (first shown below), which is in a waiting position on an object monitor, perhaps a Unix process that extends with the receiveBatchEvent () method. Unix Process Ended Process Has Finished, Will Thread Always Be In Waiting Mode?

  "VBJ = ThreadPool worker id = 4 = unsafe SCM = iiop_tp shell = 419d05" daemon prio = 3 tid = 0x087c3c00 LWP = 62 NID = 0x3e in Object.wait () [0xea6ee000 ] Java .lang.Thread.State: java.lang.Object.wait (Object.java:485) java.lang.Object.wait (Native method on java.lang.UNIXProcess.waitFor) (on UNIXProcess (object Monitor On) .java: 115) - Lock & lt; 0xf3495028 & gt; (A java.lang.UNIXProcess) at com.ericsson.nms.cif.na.server.SequencePushConsumerImpl.push_structured_events com.ericsson.nms.fm.ims.eim.plugin.NrmNotificationConsumer.receiveBatchEvent (unknown source) (SequencePushConsumerImpl.java : 45) at org.omg.CosNotifyComm.SequencePushConsumerPOA._invoke (SequencePushConsumerPOA.java:60) at org.omg.CosNotifyComm.SequencePushConsumerPOA._invoke (Sequence PushConsumerPOA.java:40) com.inprise.vbroker.poa.POAImpl.invoke At (unknown source) com.inprise.vbroker.IIOP.ServerProtocolAdapter.doRequest at com.inprise.vbroker.GIOP.GiopProtocolAdapter.doRequest (unknown source) at com.inprise.vbroker.poa.ActivationRecord.invoke (unknown source) ( Unknown source) com.inprise.vbroker.orb.ThreadPool $ poolWorker.run com.inprise.vbroker.orb.TPDispatcherImpl $ TPDispatcher.run (unknown Source: com.inprise.vbroker.GIOP.GiopProtocolAdapter.dispatchMessage (unknown source) (unknown source) --------------------------- ----- --------------------------------------------- ----- - nid = 0x28 (in object.wait) [0xeae9d000] java.lang.Thread.State: wait java.lang.Object.wait (Basic Law) on java.lang.Object.wait (object Monitor At) java.lang.Object.wait (Object. Java: 485) at com.ericsson.nms.fm.ims.eim.plugin.NrmNotificationConsumer $ NotificationConsumer.SynchronizedWait (unknown source) - lock & lt; 0xf32815a0 & gt; At java.lang.Thread com.ericsson.nms.fm.ims.eim.plugin.NrmNotificationConsumer $ NotificationConsumer.run (unknown source) (a com.ericsson.nms.fm.ims.eim.plugin.NrMNotificationConsumer $ NotificationConsumer) . Thanh (Thredkjawa: 662) Lock Hoikebl Synchronizer: - None  

A Java Waiting for the lock will wait indefinitely until the thread lock is released, yes. It is waiting on a Java lock, and not anything connected directly to the Unix process. If you have a synchronize block or method that somewhere generates a Unix process, then whatever happens in that block or method, will happen in the case of the Unix process. , But surely it would be possible to block the code ever.

If you have something similar

  public class SomeClass {public synchronized method A () {while (true) {// nothing}} public synchronized The zero method B () {// something useful}}  

and a thread methodA () to some class Lock will be available, and do not release it anytime. If a second thread attempts to invoke methodB () on that code, it will always be a block because it will not be able to get the lock.

This is critically important when you write the synchronize block, the faster they should be as fast and fast as possible, and to ensure that they are always finished They should go, check them carefully.


Comments

Popular posts from this blog

winforms - C# Form - Property Change -

javascript - amcharts makechart not working -

java - Algorithm negotiation fail SSH in Jenkins -