这是行为:
我运行的应用程序经常将内容记录到文件和控制台。今天早上就挂了。线程运行的方法在一个多小时内未返回。一旦我在命令行上按下回车键,它就会继续。使用 JConsole,我能够提取我看到的唯一可疑的东西(JConsole 没有检测到任何死锁)。
这是运行了一个多小时的方法的日志:
Name: Thread-4
State: RUNNABLE
Total blocked: 38 Total waited: 56,153
Stack trace:
java.io.FileOutputStream.writeBytes(Native Method)
java.io.FileOutputStream.write(FileOutputStream.java:318)
java.io.BufferedOutputStream.write(BufferedOutputStream.java:122)
- locked java.io.BufferedOutputStream@9b96a26
java.io.PrintStream.write(PrintStream.java:480)
- locked java.io.PrintStream@6be7e9c6
sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291)
sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:295)
sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:141)
- locked java.io.OutputStreamWriter@46a4fd82
java.io.OutputStreamWriter.flush(OutputStreamWriter.java:229)
java.util.logging.StreamHandler.flush(StreamHandler.java:242)
- locked java.util.logging.ConsoleHandler@79ff8609
java.util.logging.ConsoleHandler.publish(ConsoleHandler.java:106)
java.util.logging.Logger.log(Logger.java:522)
java.util.logging.Logger.doLog(Logger.java:543)
java.util.logging.Logger.log(Logger.java:607)
com.mycomp.myproj.util.Log.log(Log.java:126)
com.mycomp.myproj.util.Log.logWarning(Log.java:79)
com.mycomp.myproj.eng.engine.runEngine(RunEngine.java:397)
com.mycomp.myproj.eng.engine.runEngine(RunEngine.java:297)
com.mycomp.myproj.eng.engine.runEngine(RunEngine.java:288)
com.mycomp.myproj.ModelYear.runYear(ModelYear.java:118)
com.mycomp.myproj.Monitor.runModel(Monitor.java:749)
com.mycomp.myproj.MonitorThread.run(MonitorThread.java:37)
谁能给我一些提示,告诉我可能出了什么问题,如何解决,是否可以查看资源?
最佳答案
Once I pressed enter on command line, it continued on.
似乎控制台正在请求阻止输出。
例如,Process文档列出了以下警告:
Because some native platforms only provide limited buffer size for standard input and output streams, failure to promptly write the input stream or read the output stream of the subprocess may cause the subprocess to block, or even deadlock.
即使是控制台也是一个进程。
关于java - 使用 Java 日志框架的死锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20101213/