我在追蹤一個間歇性足以成爲真正的bastich的生產缺陷,可以正確診斷,但頻繁程度足以成爲我們客戶的合法滋擾。雖然我正在等待它在一臺機器上再次發生跟蹤輸出的日誌文件,我試圖想出一個可能的理論。競爭文件訪問可能導致Java死鎖嗎?
是否有任何方式競爭文件讀/寫來創建相當於死鎖條件的東西?例如,假設我有偶爾寫入config.xml的線程A,偶爾讀取它的線程B。是否有一組情況會導致線程B阻止線程A繼續進行?
我要感謝任何人幫助這個理論性的釣魚探險。
編輯:要回答Pyrolistical的問題:代碼沒有使用FileLock,並且運行在WinXP機器上。沒有問,但可能值得注意的是:生產機器運行Java 1.5。
你知道線程堆棧掛起時的樣子嗎?您可以使用jvisualvm附加到掛起的jvm並轉儲線程堆棧。 – 2010-04-08 18:28:46
你使用'FileLock'嗎?如果不是,那麼我認爲你會得到部分讀取或錯誤,但從來沒有死鎖。這也是操作系統和FS所依賴的 – Pyrolistical 2010-04-08 18:29:00
@Devon:不,我不知道。我對jvisualvm不熟悉,但基於對Google的快速訪問,這顯然是我需要糾正的問題,謝謝! @Pyrolistical:不,不使用FileLock,代碼在WinXP下運行。 – BlairHippo 2010-04-08 18:42:49