私はスレッドプール内で2つのスレッドを実行しています。私のアプリケーションは、実行した後にハングアップします。 1つのスレッドがMONITORにあり、もう1つがRUNNING状態になっていることをスレッド・ダンプで確認できます。 RUNNING状態のスレッドは、同期メソッドを入力してロックを取得し、最後にネイティブメソッドと呼ばれ、応答を停止したことを示します。しかし、それは状態を示してランニングです。 MONITOR状態の2番目のスレッドは、最初のスレッドがMONITORを解放するのを待ってブロックされます。スレッドダンプには最初のスレッドが実行中であることが示されていますが、2つのスレッドがデッドロックされています。私はそれがスレッドスタックが表示できないネイティブコードからいくつかのモニターを取得しようとしていると思われる。ネイティブコールのスレッドとJavaスレッドがデッドロックされている可能性はありますか?下記参照。 もう1つ。私が繰り返し実行すると、上記のようなデッドロックはコードの様々な部分で無作為に発生し、Javaとネイティブの間に貼り付けられるものだけでなく、時にはFile IO操作(ネイティブとネイティブの間) 。しかし、Javaとネイティブがデッドロックに陥る可能性はありますか?ありがとう。ネイティブスレッドはJavaスレッドをブロックできます
"[email protected]" prio=5 tid=0x14 nid=NA runnable
java.lang.Thread.State: RUNNABLE
blocks [email protected]
at java.lang.Object.clone(Object.java:-1)
at java.util.ResourceBundle$CacheKey.clone(ResourceBundle.java:655)
at java.util.ResourceBundle.putBundleInCache(ResourceBundle.java:1693)
at java.util.ResourceBundle.findBundle(ResourceBundle.java:1477)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1361)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:845)
at com.sun.org.apache.xerces.internal.utils.SecuritySupport$7.run(SecuritySupport.java:169)
at com.sun.org.apache.xerces.internal.utils.SecuritySupport$7.run(SecuritySupport.java:166)
at java.security.AccessController.doPrivileged(AccessController.java:-1)
at com.sun.org.apache.xerces.internal.utils.SecuritySupport.getResourceBundle(SecuritySupport.java:166)
at com.sun.org.apache.xerces.internal.impl.xpath.regex.RegexParser.setLocale(RegexParser.java:99)
at com.sun.org.apache.xerces.internal.impl.xpath.regex.RegexParser.<init>(RegexParser.java:93)
at com.sun.org.apache.xerces.internal.impl.xpath.regex.ParserForXMLSchema.<init>(ParserForXMLSchema.java:41)
at com.sun.org.apache.xerces.internal.impl.xpath.regex.RegularExpression.setPattern(RegularExpression.java:2291)
at com.sun.org.apache.xerces.internal.impl.xpath.regex.RegularExpression.setPattern(RegularExpression.java:2308)
at com.sun.org.apache.xerces.internal.impl.xpath.regex.RegularExpression.<init>(RegularExpression.java:2266)
at com.sun.org.apache.xerces.internal.impl.dv.xs.XSSimpleTypeDecl.applyFacets(XSSimpleTypeDecl.java:844)
at com.sun.org.apache.xerces.internal.impl.dv.xs.XSSimpleTypeDecl.applyFacets1(XSSimpleTypeDecl.java:751)
at com.sun.org.apache.xerces.internal.impl.dv.xs.BaseSchemaDVFactory.createBuiltInTypes(BaseSchemaDVFactory.java:208)
at com.sun.org.apache.xerces.internal.impl.dv.xs.SchemaDVFactoryImpl.createBuiltInTypes(SchemaDVFactoryImpl.java:47)
at com.sun.org.apache.xerces.internal.impl.dv.xs.SchemaDVFactoryImpl.<clinit>(SchemaDVFactoryImpl.java:42)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(NativeConstructorAccessorImpl.java:-1)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at com.sun.org.apache.xerces.internal.utils.ObjectFactory.newInstance(ObjectFactory.java:158)
at com.sun.org.apache.xerces.internal.utils.ObjectFactory.newInstance(ObjectFactory.java:143)
at com.sun.org.apache.xerces.internal.impl.dv.SchemaDVFactory.getInstance(SchemaDVFactory.java:73)
- locked <0x1226> (a java.lang.Class)
at com.sun.org.apache.xerces.internal.impl.dv.SchemaDVFactory.getInstance(SchemaDVFactory.java:57)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.reset(XMLSchemaLoader.java:1027)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar(XMLSchemaLoader.java:559)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar(XMLSchemaLoader.java:538)
at com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory.newSchema(XMLSchemaFactory.java:255)
at com.fmr.feeds.transformation.XmlProcessor.validateXml(XmlProcessor.java:52)
at com.fmr.feeds.transformation.XmlProcessor.validateInputXML(XmlProcessor.java:34)
at com.fmr.feeds.transformation.Controller.processRecord(Controller.java:99)
at com.fmr.feeds.transformation.Controller.lambda$invokeTransformationService$1(Controller.java:80)
at com.fmr.feeds.transformation.Controller$$Lambda$29.1090160486.run(Unknown Source:-1)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
"[email protected]" prio=5 tid=0x13 nid=NA waiting for monitor entry
java.lang.Thread.State: BLOCKED
waiting for [email protected] to release lock on <0x1226> (a java.lang.Class)
at com.sun.org.apache.xerces.internal.impl.dv.SchemaDVFactory.getInstance(SchemaDVFactory.java:57)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.reset(XMLSchemaLoader.java:1027)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar(XMLSchemaLoader.java:559)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar(XMLSchemaLoader.java:538)
at com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory.newSchema(XMLSchemaFactory.java:255)
at com.fmr.feeds.transformation.XmlProcessor.validateXml(XmlProcessor.java:52)
at com.fmr.feeds.transformation.XmlProcessor.validateInputXML(XmlProcessor.java:34)
at com.fmr.feeds.transformation.Controller.processRecord(Controller.java:99)
at com.fmr.feeds.transformation.Controller.lambda$invokeTransformationService$1(Controller.java:80)
at com.fmr.feeds.transformation.Controller$$Lambda$29.1090160486.run(Unknown Source:-1)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)