Я использую код ниже, чтобы заблокировать одновременный доступ к объекту аукциона. Он получает объект из хэш-карты, поэтому он работает с широким спектром различных аукционов.
Я использовал синхронизированный блок со ссылкой на отдельный объект Аукциона, выбранный в качестве параметра. У меня сложилось впечатление, что это удерживает блокировку от монитора объектов и блокирует доступ к потокам также с использованием того же аукциона (пока не закончится первый случай).
Может ли кто-нибудь подтвердить, что этот код действует таким образом, что 1) Если два потока оба ссылаются на аукцион A, тогда только один может продолжаться одновременно 2) Если один поток ссылается на аукцион A и другой аукцион B, тогда они оба продолжают, как они приобретают разные замки.
//Get auction from hashmap
Auction biddingAuction = (Auction) auctions.get(ID);
//Check that auction is active
if(biddingAuction != null)
{
//Acquire lock on Auction object
synchronized(biddingAuction) {
//Some code that alters values of Auction
}
} else {
return "\nBid failed - no auction with an ID of " + ID + " was found\n";
}
любая ясность будет оценена, спасибо