我目前正在嘗試編寫一個Logger風格的線程。我沒有使用現有的API,因爲這部分是爲了改進我的線程。Java線程沒有清理
當線程中斷時,我需要它正常關閉,刷新最後一個排隊的消息並關閉文件流。
目前,它關閉,但消息通常仍在排隊,我擔心文件流沒有正常關閉。
這是我的run()
while(!shutdown){
writeMessages();
try{
Thread.sleep(5000);
}
catch (InterruptedException e) {
}
}try {
writeMessages();
} catch (CustomException e1) {
e1.printStackTrace();
}
try {
logFile.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
errFile.close();
} catch (IOException e) {
e.printStackTrace();
}
確定這些消息在您調用writeMessages之後不會被添加* – Erik 2011-04-23 23:32:23
是的。我相當肯定這個問題缺乏對線程清理的理解 – InfernalRapture 2011-04-23 23:36:22
您發佈的代碼段沒有這樣的問題 - 錯誤在別處 – Erik 2011-04-23 23:38:38