Correct the concurrent initialization pattern.

This commit is contained in:
Kristian S. Stangeland 2012-11-20 03:32:44 +01:00
parent 7b9d971238
commit 9170e48992

View File

@ -99,10 +99,14 @@ class PlayerSendingHandler {
// Safe concurrent initialization
if (queues == null && createNew) {
QueueContainer previous = playerSendingQueues.putIfAbsent(name, new QueueContainer());
final QueueContainer newContainer = new QueueContainer();
// Attempt to map the queue
queues = playerSendingQueues.putIfAbsent(name, newContainer);
if (previous != null)
queues = previous;
if (queues == null) {
queues = newContainer;
}
}
// Check for NULL again