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
// ...
}