这里是行为:死锁使用Java日志框架
我运行的东西记录到文件和控制台很经常的应用。今天早上它挂断了。由线程运行的方法超过一个小时不会返回。一旦我按下命令行上的输入,它就会继续。使用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 [email protected]
java.io.PrintStream.write(PrintStream.java:480)
- locked [email protected]
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 [email protected]
java.io.OutputStreamWriter.flush(OutputStreamWriter.java:229)
java.util.logging.StreamHandler.flush(StreamHandler.java:242)
- locked [email protected]
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)
有人可以给我什么可能是错误的提示,如何解决,是资源查看?
在猜测我会说它正在等待文件,做了一些其他线程/进程锁定文件? – Taylor
我跑了单独的实例,但是,我确保只有第一个实例有一个FileHandler(只有第一个实例写入日志文件)。没有别的东西写入日志文件。这是来自第一个实例的日志(第二个实例没有被挂起)。另外,即使它们都在同时写入,第二个实例我们创建了第二个文件log.log2并在那里写入。 – jn1kk