今天寫java的時候,在一個類中寫入了2個synchronized 方法。而方法1調用方法2,執行的時候老是卡住,無法往下走。
經過查閱資料,發現 synchronized方法執行的時候,synchronized方法影響的範圍並不是單單方法本身,而是這個類中所有帶有synchronized 的方法,synchronized線程都會等待其執行完成。這樣子a調用了b,而b又要等待a執行完成才能執行,造成了死鎖。
遇此問題,特地記錄。
今天寫java的時候,在一個類中寫入了2個synchronized 方法。而方法1調用方法2,執行的時候老是卡住,無法往下走。
經過查閱資料,發現 synchronized方法執行的時候,synchronized方法影響的範圍並不是單單方法本身,而是這個類中所有帶有synchronized 的方法,synchronized線程都會等待其執行完成。這樣子a調用了b,而b又要等待a執行完成才能執行,造成了死鎖。
遇此問題,特地記錄。