首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Windows Server 2003 下 Tomcat 控制台輸出卡住問題:快速編輯模式導致線程阻塞

     編輯:Java 相關知識

現象:Windows Server 2003 運行 Tomcat 5.5,代碼中有 System.out.println 或 e.printStackTrace() 等控制台輸出時,當前線程卡住、控制台無輸出。必須在伺服器上按下空白鍵或 Enter 才恢復輸出與線程運行。

根本原因

Windows 命令提示字元視窗預設開啟快速編輯模式。當滑鼠在視窗中點選/拖曳選取文字時,視窗進入「選取模式」,**導致寫入標準輸出的線程阻塞**,直到按鍵釋放選取狀態。Tomcat 作為服務在背景運行,若控制台視窗被意外觸發選取模式 (甚至無人操作時因系統行為觸發),所有標準輸出線程將集體凍結。

解決步驟 (圖解)

  1. 控制台視窗左上角圖示 → 右鍵 → 屬性

    開啟屬性

  2. 選項 索引標籤 → 取消勾選 快速編輯模式

    取消快速編輯模式

  3. (可選) 勾選 插入模式 依個人習慣決定 (建議保留預設)

    插入模式選項

補充建議

  • 生產環境最佳實踐:不要依賴控制台輸出。配置 log4j/logback 等日誌框架輸出至檔案,並設定 rolling policy 避免單檔過大
  • 若必須保留控制台,考慮將 Tomcat 安裝為 Windows 服務 (參考相關文章),服務模式下標準輸出可重導向至檔案,不受控制台視窗模式影響
  • Windows Server 2008 R2 / 2012 / 2016 同理,預設同樣開啟快速編輯模式

總結

一個隱藏的視窗屬性設定,可能導致生產系統「莫名其妙」凍結。關閉快速編輯模式,或更徹底地移除對控制台輸出的依賴,是解決此類問題的正確姿勢。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved