我在这里有这个代码块,我需要确保rankedPlayersWaitingForMatch
线程之间正确同步。我打算使用synchronize
,但我认为不会在这里工作,因为if
语句中使用了变量。我在网上阅读了有关但我对如何在这种情况下正确使用该块final Lock lock = new ReentrantLock();
感到有点困惑。try/finally
我可以举个简单的例子吗?谢谢
// start synchronization
if (rankedPlayersWaitingForMatch.get(rankedType).size() >= 2) {
Player player1 = rankedPlayersWaitingForMatch.get(rankedType).remove();
Player player2 = rankedPlayersWaitingForMatch.get(rankedType).remove();
// end synchronization
// ... I don't want this all to be synchronized, just after the first 2 remove()
} else {
// end synchronization
// ...
}