Removed several synchronized locks.

This commit is contained in:
MobiusDevelopment
2019-06-30 23:11:52 +00:00
parent ff0b12f059
commit a0fe112150
45 changed files with 646 additions and 1664 deletions

View File

@@ -712,7 +712,7 @@ public final class EffectList
* @param info
* @param removed
*/
private synchronized void removeActive(BuffInfo info, boolean removed)
private void removeActive(BuffInfo info, boolean removed)
{
if (!_actives.isEmpty())
{
@@ -790,7 +790,7 @@ public final class EffectList
updateEffectList(true);
}
private synchronized void addActive(BuffInfo info)
private void addActive(BuffInfo info)
{
final Skill skill = info.getSkill();

View File

@@ -51,7 +51,6 @@ import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.GameTimeController;
import org.l2jmobius.gameserver.ItemsAutoDestroy;
import org.l2jmobius.gameserver.LoginServerThread;
import org.l2jmobius.gameserver.RecipeController;
import org.l2jmobius.gameserver.ai.CreatureAI;
import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.ai.PlayerAI;
@@ -116,6 +115,7 @@ import org.l2jmobius.gameserver.instancemanager.MatchingRoomManager;
import org.l2jmobius.gameserver.instancemanager.MentorManager;
import org.l2jmobius.gameserver.instancemanager.PunishmentManager;
import org.l2jmobius.gameserver.instancemanager.QuestManager;
import org.l2jmobius.gameserver.instancemanager.SellBuffsManager;
import org.l2jmobius.gameserver.instancemanager.SiegeManager;
import org.l2jmobius.gameserver.instancemanager.ZoneManager;
import org.l2jmobius.gameserver.model.AccessLevel;
@@ -600,12 +600,12 @@ public final class PlayerInstance extends Playable
/** The Pet of the PlayerInstance */
private PetInstance _pet = null;
/** Servitors of the PlayerInstance */
private volatile Map<Integer, Summon> _servitors = null;
private volatile Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
/** The Agathion of the PlayerInstance */
private int _agathionId = 0;
// apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!!
// after Freya players can control more than one tamed beast
private volatile Set<TamedBeastInstance> _tamedBeast = null;
private volatile Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private boolean _minimapAllowed = false;
@@ -677,7 +677,7 @@ public final class PlayerInstance extends Playable
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos;
@SuppressWarnings("rawtypes")
private volatile Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events;
private volatile Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events = new ConcurrentHashMap<>();
private boolean _isOnCustomEvent = false;
// protects a char from aggro mobs when getting up from fake death
@@ -694,7 +694,7 @@ public final class PlayerInstance extends Playable
private int _expertiseWeaponPenalty = 0;
private int _expertisePenaltyBonus = 0;
private volatile Map<Class<? extends AbstractRequest>, AbstractRequest> _requests;
private volatile Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
protected boolean _inventoryDisable = false;
/** Player's cubics. */
@@ -717,7 +717,7 @@ public final class PlayerInstance extends Playable
private final BlockList _blockList = new BlockList(this);
private volatile Map<Integer, Skill> _transformSkills;
private final Map<Integer, Skill> _transformSkills = new ConcurrentHashMap<>();
private ScheduledFuture<?> _taskRentPet;
private ScheduledFuture<?> _taskWater;
@@ -2033,11 +2033,7 @@ public final class PlayerInstance extends Playable
public int getWeightPenalty()
{
if (_dietMode)
{
return 0;
}
return _curWeightPenalty;
return _dietMode ? 0 : _curWeightPenalty;
}
/**
@@ -4314,7 +4310,14 @@ public final class PlayerInstance extends Playable
if ((targetPlayer.getPrivateStoreType() == PrivateStoreType.SELL) || (targetPlayer.getPrivateStoreType() == PrivateStoreType.PACKAGE_SELL))
{
sendPacket(new PrivateStoreListSell(this, targetPlayer));
if (_isSellingBuffs)
{
SellBuffsManager.getInstance().sendBuffMenu(this, targetPlayer, 0);
}
else
{
sendPacket(new PrivateStoreListSell(this, targetPlayer));
}
}
else if (targetPlayer.getPrivateStoreType() == PrivateStoreType.BUY)
{
@@ -5034,13 +5037,13 @@ public final class PlayerInstance extends Playable
{
stopFeed();
}
synchronized (this)
// synchronized (this)
// {
if (isFakeDeath())
{
if (isFakeDeath())
{
stopFakeDeath(true);
}
stopFakeDeath(true);
}
// }
// Unsummon Cubics
if (!_cubics.isEmpty())
@@ -5462,7 +5465,7 @@ public final class PlayerInstance extends Playable
@Override
public Map<Integer, Summon> getServitors()
{
return _servitors == null ? Collections.emptyMap() : _servitors;
return _servitors;
}
public Summon getAnyServitor()
@@ -5513,16 +5516,6 @@ public final class PlayerInstance extends Playable
public void addServitor(Summon servitor)
{
if (_servitors == null)
{
synchronized (this)
{
if (_servitors == null)
{
_servitors = new ConcurrentHashMap<>(1);
}
}
}
_servitors.put(servitor.getObjectId(), servitor);
}
@@ -5540,16 +5533,6 @@ public final class PlayerInstance extends Playable
*/
public void addTrainedBeast(TamedBeastInstance tamedBeast)
{
if (_tamedBeast == null)
{
synchronized (this)
{
if (_tamedBeast == null)
{
_tamedBeast = ConcurrentHashMap.newKeySet();
}
}
}
_tamedBeast.add(tamedBeast);
}
@@ -10441,14 +10424,11 @@ public final class PlayerInstance extends Playable
}
// Trained beast is lost after teleport
if (_tamedBeast != null)
for (TamedBeastInstance tamedBeast : _tamedBeast)
{
for (TamedBeastInstance tamedBeast : _tamedBeast)
{
tamedBeast.deleteMe();
}
_tamedBeast.clear();
tamedBeast.deleteMe();
}
_tamedBeast.clear();
// Modify the position of the pet if necessary
if (_pet != null)
@@ -10548,12 +10528,9 @@ public final class PlayerInstance extends Playable
super.reduceCurrentHp(value, attacker, skill, isDOT, directlyToHp, critical, reflect);
// notify the tamed beast of attacks
if (_tamedBeast != null)
for (TamedBeastInstance tamedBeast : _tamedBeast)
{
for (TamedBeastInstance tamedBeast : _tamedBeast)
{
tamedBeast.onOwnerGotAttacked(attacker);
}
tamedBeast.onOwnerGotAttacked(attacker);
}
}
@@ -10945,16 +10922,6 @@ public final class PlayerInstance extends Playable
LOGGER.log(Level.SEVERE, "deleteMe()", e);
}
// Stop crafting, if in progress
try
{
RecipeController.getInstance().requestMakeItemAbort(this);
}
catch (Exception e)
{
LOGGER.log(Level.SEVERE, "deleteMe()", e);
}
// Cancel Attak or Cast
try
{
@@ -11759,38 +11726,27 @@ public final class PlayerInstance extends Playable
public void addTransformSkill(Skill skill)
{
if (_transformSkills == null)
{
synchronized (this)
{
if (_transformSkills == null)
{
_transformSkills = new HashMap<>();
}
}
}
_transformSkills.put(skill.getId(), skill);
}
public boolean hasTransformSkill(Skill skill)
{
return (_transformSkills != null) && (_transformSkills.get(skill.getId()) == skill);
return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill);
}
public boolean hasTransformSkills()
{
return (_transformSkills != null);
return !_transformSkills.isEmpty();
}
public Collection<Skill> getAllTransformSkills()
{
final Map<Integer, Skill> transformSkills = _transformSkills;
return transformSkills != null ? transformSkills.values() : Collections.emptyList();
return _transformSkills.values();
}
public synchronized void removeAllTransformSkills()
public void removeAllTransformSkills()
{
_transformSkills = null;
_transformSkills.clear();
}
/**
@@ -11800,8 +11756,7 @@ public final class PlayerInstance extends Playable
@Override
public final Skill getKnownSkill(int skillId)
{
final Map<Integer, Skill> transformSkills = _transformSkills;
return transformSkills != null ? transformSkills.getOrDefault(skillId, super.getKnownSkill(skillId)) : super.getKnownSkill(skillId);
return !_transformSkills.isEmpty() ? _transformSkills.getOrDefault(skillId, super.getKnownSkill(skillId)) : super.getKnownSkill(skillId);
}
/**
@@ -11813,8 +11768,7 @@ public final class PlayerInstance extends Playable
if (isTransformed())
{
final Map<Integer, Skill> transformSkills = _transformSkills;
if (transformSkills != null)
if (!_transformSkills.isEmpty())
{
// Include transformation skills and those skills that are allowed during transformation.
currentSkills = currentSkills.stream().filter(Skill::allowOnTransform).collect(Collectors.toList());
@@ -11847,7 +11801,7 @@ public final class PlayerInstance extends Playable
}
}
// Include transformation skills.
currentSkills.addAll(transformSkills.values());
currentSkills.addAll(_transformSkills.values());
}
}
@@ -13260,7 +13214,7 @@ public final class PlayerInstance extends Playable
@Override
public boolean canRevive()
{
if (_events != null)
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values())
{
@@ -13303,7 +13257,7 @@ public final class PlayerInstance extends Playable
{
return true;
}
if (_events != null)
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values())
{
@@ -13322,7 +13276,7 @@ public final class PlayerInstance extends Playable
{
return true;
}
if (_events != null)
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values())
{
@@ -13341,7 +13295,7 @@ public final class PlayerInstance extends Playable
{
return true;
}
if (_events != null)
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values())
{
@@ -13709,22 +13663,12 @@ public final class PlayerInstance extends Playable
*/
public boolean addRequest(AbstractRequest request)
{
if (_requests == null)
{
synchronized (this)
{
if (_requests == null)
{
_requests = new ConcurrentHashMap<>();
}
}
}
return canRequest(request) && (_requests.putIfAbsent(request.getClass(), request) == null);
}
public boolean canRequest(AbstractRequest request)
{
return (_requests != null) && _requests.values().stream().allMatch(request::canWorkWith);
return !_requests.isEmpty() && _requests.values().stream().allMatch(request::canWorkWith);
}
/**
@@ -13733,7 +13677,7 @@ public final class PlayerInstance extends Playable
*/
public boolean removeRequest(Class<? extends AbstractRequest> clazz)
{
return (_requests != null) && (_requests.remove(clazz) != null);
return !_requests.isEmpty() && (_requests.remove(clazz) != null);
}
/**
@@ -13743,7 +13687,7 @@ public final class PlayerInstance extends Playable
*/
public <T extends AbstractRequest> T getRequest(Class<T> requestClass)
{
return _requests != null ? requestClass.cast(_requests.get(requestClass)) : null;
return !_requests.isEmpty() ? requestClass.cast(_requests.get(requestClass)) : null;
}
/**
@@ -13751,12 +13695,12 @@ public final class PlayerInstance extends Playable
*/
public boolean hasRequests()
{
return (_requests != null) && !_requests.isEmpty();
return !_requests.isEmpty();
}
public boolean hasItemRequest()
{
return (_requests != null) && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
}
/**
@@ -13767,7 +13711,7 @@ public final class PlayerInstance extends Playable
@SafeVarargs
public final boolean hasRequest(Class<? extends AbstractRequest> requestClass, Class<? extends AbstractRequest>... classes)
{
if (_requests != null)
if (!_requests.isEmpty())
{
for (Class<? extends AbstractRequest> clazz : classes)
{
@@ -13787,7 +13731,7 @@ public final class PlayerInstance extends Playable
*/
public boolean isProcessingItem(int objectId)
{
return (_requests != null) && _requests.values().stream().anyMatch(req -> req.isUsing(objectId));
return !_requests.isEmpty() && _requests.values().stream().anyMatch(req -> req.isUsing(objectId));
}
/**
@@ -13796,7 +13740,7 @@ public final class PlayerInstance extends Playable
*/
public void removeRequestsThatProcessesItem(int objectId)
{
if (_requests != null)
if (!_requests.isEmpty())
{
_requests.values().removeIf(req -> req.isUsing(objectId));
}
@@ -13828,16 +13772,6 @@ public final class PlayerInstance extends Playable
*/
public Map<Integer, ExResponseCommissionInfo> getLastCommissionInfos()
{
if (_lastCommissionInfos == null)
{
synchronized (this)
{
if (_lastCommissionInfos == null)
{
_lastCommissionInfos = new ConcurrentHashMap<>();
}
}
}
return _lastCommissionInfos;
}
@@ -13928,16 +13862,6 @@ public final class PlayerInstance extends Playable
*/
public boolean registerOnEvent(AbstractEvent<?> event)
{
if (_events == null)
{
synchronized (this)
{
if (_events == null)
{
_events = new ConcurrentHashMap<>();
}
}
}
return _events.putIfAbsent(event.getClass(), event) == null;
}
@@ -13947,7 +13871,7 @@ public final class PlayerInstance extends Playable
*/
public boolean removeFromEvent(AbstractEvent<?> event)
{
if (_events == null)
if (_events.isEmpty())
{
return false;
}
@@ -13961,11 +13885,10 @@ public final class PlayerInstance extends Playable
*/
public <T extends AbstractEvent<?>> T getEvent(Class<T> clazz)
{
if (_events == null)
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null);
}
@@ -13974,11 +13897,10 @@ public final class PlayerInstance extends Playable
*/
public AbstractEvent<?> getEvent()
{
if (_events == null)
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().findFirst().orElse(null);
}
@@ -13988,11 +13910,6 @@ public final class PlayerInstance extends Playable
*/
public boolean isOnEvent(Class<? extends AbstractEvent<?>> clazz)
{
if (_events == null)
{
return false;
}
return _events.containsKey(clazz);
}

View File

@@ -178,7 +178,7 @@ public final class TamedBeastInstance extends FeedableBeastInstance
}
// clean up variables
if ((_owner != null) && (_owner.getTrainedBeasts() != null))
if (_owner != null)
{
_owner.getTrainedBeasts().remove(this);
}
@@ -311,7 +311,7 @@ public final class TamedBeastInstance extends FeedableBeastInstance
stopHpMpRegeneration();
// clean up variables
if ((_owner != null) && (_owner.getTrainedBeasts() != null))
if (_owner != null)
{
_owner.getTrainedBeasts().remove(this);
}