我想同步一段代碼,但不想簡單地鎖定實現類(this)。基於Map的內容同步
有問題的代碼塊是一個方法的一部分,它需要一個id。
我想禁止一個新的線程進入該塊,如果傳入該方法的ID包含在該類的列表中......如果它不在列表中,該實體可自由操作,並因此線程將被允許進入塊...
有沒有一種簡單的方法來做到這一點?
我想同步一段代碼,但不想簡單地鎖定實現類(this)。基於Map的內容同步
有問題的代碼塊是一個方法的一部分,它需要一個id。
我想禁止一個新的線程進入該塊,如果傳入該方法的ID包含在該類的列表中......如果它不在列表中,該實體可自由操作,並因此線程將被允許進入塊...
有沒有一種簡單的方法來做到這一點?
這可能是你正在尋找的答案:http://stackoverflow.com/a/17776425/1499922 –
你是什麼意思與「不允許」? 'synchronized'永遠不會被禁止,它可能只會被阻塞直到可用,所以你期望的行爲是什麼? – Holger
爲什麼你首先需要'同步'?一個簡單的檢查將不會執行,比如'!if(list.contains(id))return'? – Eugene