這裏是行爲:死鎖使用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