瀏覽代碼

BETA: Fixing MPE on minion list using "Double-Checked Locking".

Reported by: thorl2
Zoey76 11 年之前
父節點
當前提交
0d3eb66f6c

+ 8 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2MonsterInstance.java

@@ -42,7 +42,7 @@ public class L2MonsterInstance extends L2Attackable
 	protected boolean _enableMinions = true;
 	
 	private L2MonsterInstance _master = null;
-	private MinionList _minionList = null;
+	private volatile MinionList _minionList = null;
 	
 	protected ScheduledFuture<?> _maintenanceTask = null;
 	
@@ -228,9 +228,14 @@ public class L2MonsterInstance extends L2Attackable
 	{
 		if (_minionList == null)
 		{
-			_minionList = new MinionList(this);
+			synchronized (this)
+			{
+				if (_minionList == null)
+				{
+					_minionList = new MinionList(this);
+				}
+			}
 		}
-		
 		return _minionList;
 	}