我使用Timer作爲進程中斷機制。邏輯的流程如下:使用Timer和TimerTask時的Java線程執行順序
T0:在T0創建新的計時器,並安排一個新的計時器任務在T2來執行(1個第二任務延遲,任務是非常簡單 - 設置一個標誌變量)
T1 :在主調用線程,睡5秒
T2:在計時器線程,任務執行
T5:睡眠完成
T6:取消計時器和任何計劃任務
該代碼在我的Windows和Ubuntu開發環境中完美工作。但是,當我在我的SLES運行相同的代碼10的構建服務器,日誌記錄表示該執行順序:
T0:定時器和定時器任務被創建在T2執行
T1:主線程休眠5秒
T5:主線程醒來
T6:定時器取消
T7:執行任務
誰能報價爲什麼會出現這種情況的解釋?非常感謝。
你正在使用什麼記錄機制?這可能只是說日誌沒有被正確刷新。 – Tom 2010-07-19 20:09:49
我正在使用log4j。我爲每個步驟使用System.currentTimeMillis記錄時間戳,所以我希望記錄輸出的順序不是罪魁禍首。 – Chrom 2010-07-19 20:13:57