From b77de360af91ac31af30fc9f70a8a3a54fa05adf Mon Sep 17 00:00:00 2001 From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com> Date: Wed, 23 Aug 2017 05:23:31 +0000 Subject: [PATCH] ThreadPool manager rework. --- .../dist/game/config/General.ini | 36 +- .../dist/game/data/html/admin/serverinfo.htm | 26 - .../scripts/ai/bosses/QueenAnt/QueenAnt.java | 2 +- .../scripts/custom/events/Elpies/Elpies.java | 2 +- .../data/scripts/custom/events/Race/Race.java | 4 +- .../data/scripts/handlers/MasterHandler.java | 2 - .../admincommandhandlers/AdminServerInfo.java | 26 - .../admincommandhandlers/AdminTest.java | 2 +- .../handlers/effecthandlers/ClassChange.java | 2 +- .../effecthandlers/ServitorShare.java | 2 +- .../punishmenthandlers/JailHandler.java | 4 +- .../handlers/telnethandlers/server/Debug.java | 88 +- .../telnethandlers/server/Performance.java | 4 +- .../handlers/telnethandlers/server/Purge.java | 4 +- .../server/ThreadPoolDebug.java | 171 ---- .../java/com/l2jmobius/Config.java | 22 +- .../com/l2jmobius/gameserver/GameServer.java | 4 +- .../gameserver/ItemsAutoDestroy.java | 2 +- .../gameserver/RecipeController.java | 10 +- .../com/l2jmobius/gameserver/Shutdown.java | 2 +- .../gameserver/ThreadPoolManager.java | 917 ++++-------------- .../l2jmobius/gameserver/ai/AbstractAI.java | 2 +- .../gameserver/ai/L2AttackableAI.java | 2 +- .../gameserver/ai/L2CharacterAI.java | 2 +- .../com/l2jmobius/gameserver/ai/L2DoorAI.java | 2 +- .../gameserver/ai/L2FortSiegeGuardAI.java | 2 +- .../gameserver/ai/L2SiegeGuardAI.java | 2 +- .../l2jmobius/gameserver/ai/L2SummonAI.java | 2 +- .../cache/WarehouseCacheManager.java | 2 +- .../gameserver/data/sql/impl/ClanTable.java | 2 +- .../gameserver/datatables/BotReportTable.java | 4 +- .../gameserver/datatables/ItemTable.java | 4 +- .../gameserver/idfactory/BitSetIDFactory.java | 2 +- .../instancemanager/CastleManorManager.java | 5 +- .../instancemanager/ClanEntryManager.java | 4 +- .../instancemanager/CommissionManager.java | 4 +- .../instancemanager/DBSpawnManager.java | 4 +- .../instancemanager/GraciaSeedsManager.java | 2 +- .../instancemanager/GrandBossManager.java | 2 +- .../HandysBlockCheckerManager.java | 4 +- .../instancemanager/ItemsOnGroundManager.java | 2 +- .../instancemanager/MailManager.java | 6 +- .../instancemanager/PremiumManager.java | 2 +- .../instancemanager/ServerRestartManager.java | 2 +- .../instancemanager/WalkingManager.java | 6 +- .../l2jmobius/gameserver/model/ClanWar.java | 10 +- .../gameserver/model/CreatureContainer.java | 2 +- .../gameserver/model/CursedWeapon.java | 6 +- .../gameserver/model/DropProtection.java | 2 +- .../l2jmobius/gameserver/model/Fishing.java | 4 +- .../l2jmobius/gameserver/model/L2Clan.java | 2 +- .../l2jmobius/gameserver/model/L2Party.java | 4 +- .../l2jmobius/gameserver/model/L2Request.java | 2 +- .../l2jmobius/gameserver/model/L2Spawn.java | 2 +- .../gameserver/model/L2WorldRegion.java | 4 +- .../gameserver/model/MpRewardTask.java | 2 +- .../gameserver/model/actor/L2Attackable.java | 2 +- .../gameserver/model/actor/L2Character.java | 26 +- .../gameserver/model/actor/L2Npc.java | 2 +- .../gameserver/model/actor/L2Vehicle.java | 2 +- .../L2ControllableAirShipInstance.java | 6 +- .../model/actor/instance/L2DecoyInstance.java | 4 +- .../model/actor/instance/L2DoorInstance.java | 6 +- .../instance/L2FortCommanderInstance.java | 2 +- .../model/actor/instance/L2PcInstance.java | 34 +- .../model/actor/instance/L2PetInstance.java | 2 +- .../actor/instance/L2RaidBossInstance.java | 2 +- .../actor/instance/L2ServitorInstance.java | 2 +- .../actor/instance/L2SiegeFlagInstance.java | 2 +- .../actor/instance/L2TamedBeastInstance.java | 8 +- .../model/actor/instance/L2TrapInstance.java | 4 +- .../model/actor/request/AbstractRequest.java | 2 +- .../model/actor/status/CharStatus.java | 2 +- .../tasks/attackable/CommandChannelTimer.java | 2 +- .../actor/tasks/npc/RandomAnimationTask.java | 2 +- .../actor/tasks/npc/trap/TrapTriggerTask.java | 2 +- .../actor/tasks/player/FlyMoveStartTask.java | 2 +- .../model/announce/AutoAnnouncement.java | 4 +- .../gameserver/model/buylist/Product.java | 4 +- .../gameserver/model/cubic/CubicInstance.java | 4 +- .../model/entity/BlockCheckerEngine.java | 14 +- .../gameserver/model/entity/Castle.java | 6 +- .../gameserver/model/entity/ClanHall.java | 6 +- .../gameserver/model/entity/Duel.java | 12 +- .../gameserver/model/entity/Fort.java | 18 +- .../gameserver/model/entity/FortSiege.java | 42 +- .../gameserver/model/entity/Siege.java | 30 +- .../model/eventengine/EventScheduler.java | 6 +- .../model/events/EventDispatcher.java | 20 +- .../model/events/timers/TimerHolder.java | 2 +- .../model/instancezone/Instance.java | 14 +- .../model/itemauction/ItemAuction.java | 2 +- .../itemauction/ItemAuctionInstance.java | 14 +- .../model/items/instance/L2ItemInstance.java | 10 +- .../gameserver/model/olympiad/Olympiad.java | 20 +- .../model/olympiad/OlympiadGameTask.java | 6 +- .../model/punishment/PunishmentTask.java | 2 +- .../gameserver/model/quest/LongTimeEvent.java | 4 +- .../gameserver/model/quest/QuestTimer.java | 2 +- .../model/residences/ResidenceFunction.java | 2 +- .../model/shuttle/L2ShuttleEngine.java | 8 +- .../gameserver/model/skills/BuffInfo.java | 6 +- .../gameserver/model/skills/SkillCaster.java | 4 +- .../model/skills/SkillChannelizer.java | 2 +- .../model/votereward/VoteSystem.java | 2 +- .../model/zone/type/L2DamageZone.java | 2 +- .../model/zone/type/L2EffectZone.java | 2 +- .../model/zone/type/L2FishingZone.java | 4 +- .../model/zone/type/L2JailZone.java | 2 +- .../zone/type/L2OlympiadStadiumZone.java | 2 +- .../type/L2ResidenceHallTeleportZone.java | 2 +- .../model/zone/type/L2SayuneZone.java | 2 +- .../gameserver/network/L2GameClient.java | 8 +- .../network/clientpackets/EnterWorld.java | 2 +- .../clientpackets/RequestPreviewItem.java | 2 +- .../clientpackets/RequestRestartPoint.java | 2 +- .../network/clientpackets/UseItem.java | 2 +- .../taskmanager/AttackStanceTaskManager.java | 2 +- .../gameserver/taskmanager/TaskManager.java | 23 +- .../com/l2jmobius/gameserver/util/Evolve.java | 8 +- .../l2jmobius/gameserver/util/MinionList.java | 2 +- .../com/l2jmobius/gameserver/util/Util.java | 2 +- .../dist/game/config/General.ini | 36 +- .../dist/game/data/html/admin/serverinfo.htm | 26 - .../ai/areas/DenOfDevil/DenOfEvil.java | 6 +- .../scripts/ai/areas/FantasyIsle/Parade.java | 10 +- .../FourSepulchers/FourSepulchers.java | 4 +- .../AltarOfSacrifice/AltarOfSacrifice.java | 2 +- .../AwakeningMaster/AwakeningMaster.java | 2 +- .../HarnakUndergroundRuinsZone.java | 6 +- .../scripts/ai/bosses/QueenAnt/QueenAnt.java | 2 +- .../data/scripts/ai/others/EnergySeeds.java | 2 +- .../ai/others/NpcBuffers/NpcBufferAI.java | 2 +- .../ai/others/NpcBuffers/NpcBuffers.java | 2 +- .../scripts/custom/events/Elpies/Elpies.java | 2 +- .../data/scripts/custom/events/Race/Race.java | 4 +- .../data/scripts/handlers/MasterHandler.java | 2 - .../AdminMonsterRace.java | 4 +- .../admincommandhandlers/AdminServerInfo.java | 26 - .../admincommandhandlers/AdminTest.java | 2 +- .../handlers/effecthandlers/ClassChange.java | 2 +- .../effecthandlers/ServitorShare.java | 2 +- .../punishmenthandlers/JailHandler.java | 4 +- .../handlers/telnethandlers/server/Debug.java | 88 +- .../telnethandlers/server/Performance.java | 4 +- .../handlers/telnethandlers/server/Purge.java | 4 +- .../server/ThreadPoolDebug.java | 171 ---- .../CastleDungeon/CastleDungeon.java | 5 +- .../ChambersOfDelusion/ChamberOfDelusion.java | 4 +- .../FortressDungeon/FortressDungeon.java | 5 +- .../Q10292_SevenSignsGirlOfDoubt.java | 2 +- .../scripts/vehicles/AirShipController.java | 4 +- .../AirShipGludioGracia.java | 8 +- .../data/scripts/vehicles/BoatGludinRune.java | 36 +- .../scripts/vehicles/BoatInnadrilTour.java | 18 +- .../scripts/vehicles/BoatRunePrimeval.java | 6 +- .../java/com/l2jmobius/Config.java | 22 +- .../com/l2jmobius/gameserver/GameServer.java | 4 +- .../gameserver/ItemsAutoDestroy.java | 2 +- .../gameserver/RecipeController.java | 10 +- .../com/l2jmobius/gameserver/Shutdown.java | 2 +- .../gameserver/ThreadPoolManager.java | 917 ++++-------------- .../l2jmobius/gameserver/ai/AbstractAI.java | 2 +- .../gameserver/ai/L2AttackableAI.java | 2 +- .../gameserver/ai/L2CharacterAI.java | 2 +- .../com/l2jmobius/gameserver/ai/L2DoorAI.java | 2 +- .../gameserver/ai/L2FortSiegeGuardAI.java | 2 +- .../gameserver/ai/L2SiegeGuardAI.java | 2 +- .../l2jmobius/gameserver/ai/L2SummonAI.java | 2 +- .../cache/WarehouseCacheManager.java | 2 +- .../gameserver/data/sql/impl/ClanTable.java | 2 +- .../gameserver/datatables/BotReportTable.java | 4 +- .../gameserver/datatables/ItemTable.java | 4 +- .../gameserver/idfactory/BitSetIDFactory.java | 2 +- .../instancemanager/CastleManorManager.java | 5 +- .../instancemanager/ClanEntryManager.java | 4 +- .../instancemanager/CommissionManager.java | 4 +- .../instancemanager/DBSpawnManager.java | 4 +- .../instancemanager/GraciaSeedsManager.java | 2 +- .../instancemanager/GrandBossManager.java | 2 +- .../HandysBlockCheckerManager.java | 4 +- .../instancemanager/ItemsOnGroundManager.java | 2 +- .../instancemanager/MailManager.java | 6 +- .../instancemanager/PremiumManager.java | 2 +- .../instancemanager/ServerRestartManager.java | 2 +- .../instancemanager/WalkingManager.java | 6 +- .../l2jmobius/gameserver/model/ClanWar.java | 10 +- .../gameserver/model/CreatureContainer.java | 2 +- .../gameserver/model/CursedWeapon.java | 6 +- .../gameserver/model/DropProtection.java | 2 +- .../l2jmobius/gameserver/model/Fishing.java | 4 +- .../l2jmobius/gameserver/model/L2Clan.java | 2 +- .../l2jmobius/gameserver/model/L2Party.java | 4 +- .../l2jmobius/gameserver/model/L2Request.java | 2 +- .../l2jmobius/gameserver/model/L2Spawn.java | 2 +- .../gameserver/model/L2WorldRegion.java | 4 +- .../gameserver/model/MpRewardTask.java | 2 +- .../gameserver/model/actor/L2Attackable.java | 2 +- .../gameserver/model/actor/L2Character.java | 26 +- .../gameserver/model/actor/L2Npc.java | 2 +- .../gameserver/model/actor/L2Vehicle.java | 2 +- .../L2ControllableAirShipInstance.java | 6 +- .../model/actor/instance/L2DecoyInstance.java | 4 +- .../model/actor/instance/L2DoorInstance.java | 6 +- .../instance/L2FortCommanderInstance.java | 2 +- .../model/actor/instance/L2PcInstance.java | 34 +- .../model/actor/instance/L2PetInstance.java | 2 +- .../actor/instance/L2RaceManagerInstance.java | 45 +- .../actor/instance/L2RaidBossInstance.java | 2 +- .../actor/instance/L2ServitorInstance.java | 2 +- .../actor/instance/L2SiegeFlagInstance.java | 2 +- .../actor/instance/L2TamedBeastInstance.java | 8 +- .../model/actor/instance/L2TrapInstance.java | 4 +- .../model/actor/request/AbstractRequest.java | 2 +- .../model/actor/status/CharStatus.java | 2 +- .../tasks/attackable/CommandChannelTimer.java | 2 +- .../actor/tasks/npc/RandomAnimationTask.java | 2 +- .../actor/tasks/npc/trap/TrapTriggerTask.java | 2 +- .../actor/tasks/player/FlyMoveStartTask.java | 2 +- .../model/announce/AutoAnnouncement.java | 4 +- .../gameserver/model/buylist/Product.java | 4 +- .../gameserver/model/cubic/CubicInstance.java | 4 +- .../model/entity/BlockCheckerEngine.java | 14 +- .../gameserver/model/entity/Castle.java | 6 +- .../gameserver/model/entity/ClanHall.java | 6 +- .../gameserver/model/entity/Duel.java | 12 +- .../gameserver/model/entity/Fort.java | 18 +- .../gameserver/model/entity/FortSiege.java | 42 +- .../gameserver/model/entity/Siege.java | 30 +- .../model/eventengine/EventScheduler.java | 6 +- .../model/events/EventDispatcher.java | 20 +- .../model/events/timers/TimerHolder.java | 2 +- .../model/instancezone/Instance.java | 14 +- .../model/itemauction/ItemAuction.java | 2 +- .../itemauction/ItemAuctionInstance.java | 14 +- .../model/items/instance/L2ItemInstance.java | 10 +- .../gameserver/model/olympiad/Olympiad.java | 20 +- .../model/olympiad/OlympiadGameTask.java | 6 +- .../model/punishment/PunishmentTask.java | 2 +- .../gameserver/model/quest/LongTimeEvent.java | 4 +- .../gameserver/model/quest/QuestTimer.java | 2 +- .../model/residences/ResidenceFunction.java | 2 +- .../model/shuttle/L2ShuttleEngine.java | 8 +- .../gameserver/model/skills/BuffInfo.java | 6 +- .../gameserver/model/skills/SkillCaster.java | 4 +- .../model/skills/SkillChannelizer.java | 2 +- .../model/votereward/VoteSystem.java | 2 +- .../model/zone/type/L2DamageZone.java | 2 +- .../model/zone/type/L2EffectZone.java | 2 +- .../model/zone/type/L2FishingZone.java | 4 +- .../model/zone/type/L2JailZone.java | 2 +- .../zone/type/L2OlympiadStadiumZone.java | 2 +- .../type/L2ResidenceHallTeleportZone.java | 2 +- .../model/zone/type/L2SayuneZone.java | 2 +- .../gameserver/network/L2GameClient.java | 8 +- .../network/clientpackets/EnterWorld.java | 2 +- .../clientpackets/RequestPreviewItem.java | 2 +- .../clientpackets/RequestRestartPoint.java | 2 +- .../network/clientpackets/UseItem.java | 2 +- .../taskmanager/AttackStanceTaskManager.java | 2 +- .../gameserver/taskmanager/TaskManager.java | 23 +- .../com/l2jmobius/gameserver/util/Evolve.java | 8 +- .../l2jmobius/gameserver/util/MinionList.java | 2 +- .../com/l2jmobius/gameserver/util/Util.java | 2 +- .../dist/game/config/General.ini | 36 +- .../dist/game/data/html/admin/serverinfo.htm | 26 - .../ai/areas/DenOfDevil/DenOfEvil.java | 6 +- .../scripts/ai/areas/FantasyIsle/Parade.java | 10 +- .../areas/GainakUnderground/GainakSiege.java | 2 +- .../FourSepulchers/FourSepulchers.java | 4 +- .../AltarOfSacrifice/AltarOfSacrifice.java | 2 +- .../AwakeningMaster/AwakeningMaster.java | 2 +- .../HarnakUndergroundRuinsZone.java | 6 +- .../scripts/ai/bosses/QueenAnt/QueenAnt.java | 2 +- .../data/scripts/ai/others/EnergySeeds.java | 2 +- .../ai/others/NpcBuffers/NpcBufferAI.java | 2 +- .../ai/others/NpcBuffers/NpcBuffers.java | 2 +- .../scripts/custom/events/Elpies/Elpies.java | 2 +- .../data/scripts/custom/events/Race/Race.java | 4 +- .../data/scripts/handlers/MasterHandler.java | 2 - .../AdminMonsterRace.java | 4 +- .../admincommandhandlers/AdminServerInfo.java | 26 - .../admincommandhandlers/AdminTest.java | 2 +- .../handlers/effecthandlers/ClassChange.java | 2 +- .../effecthandlers/ServitorShare.java | 2 +- .../punishmenthandlers/JailHandler.java | 4 +- .../handlers/telnethandlers/server/Debug.java | 88 +- .../telnethandlers/server/Performance.java | 4 +- .../handlers/telnethandlers/server/Purge.java | 4 +- .../server/ThreadPoolDebug.java | 171 ---- .../CastleDungeon/CastleDungeon.java | 5 +- .../ChambersOfDelusion/ChamberOfDelusion.java | 4 +- .../FortressDungeon/FortressDungeon.java | 5 +- .../Q10292_SevenSignsGirlOfDoubt.java | 2 +- .../scripts/vehicles/AirShipController.java | 4 +- .../AirShipGludioGracia.java | 8 +- .../data/scripts/vehicles/BoatGludinRune.java | 36 +- .../scripts/vehicles/BoatInnadrilTour.java | 18 +- .../scripts/vehicles/BoatRunePrimeval.java | 6 +- .../java/com/l2jmobius/Config.java | 22 +- .../com/l2jmobius/gameserver/GameServer.java | 4 +- .../gameserver/ItemsAutoDestroy.java | 2 +- .../gameserver/RecipeController.java | 10 +- .../com/l2jmobius/gameserver/Shutdown.java | 2 +- .../gameserver/ThreadPoolManager.java | 917 ++++-------------- .../l2jmobius/gameserver/ai/AbstractAI.java | 2 +- .../gameserver/ai/L2AttackableAI.java | 2 +- .../gameserver/ai/L2CharacterAI.java | 2 +- .../com/l2jmobius/gameserver/ai/L2DoorAI.java | 2 +- .../gameserver/ai/L2FortSiegeGuardAI.java | 2 +- .../gameserver/ai/L2SiegeGuardAI.java | 2 +- .../l2jmobius/gameserver/ai/L2SummonAI.java | 2 +- .../cache/WarehouseCacheManager.java | 2 +- .../gameserver/data/sql/impl/ClanTable.java | 2 +- .../gameserver/datatables/BotReportTable.java | 4 +- .../gameserver/datatables/ItemTable.java | 4 +- .../gameserver/idfactory/BitSetIDFactory.java | 2 +- .../instancemanager/CastleManorManager.java | 5 +- .../instancemanager/ClanEntryManager.java | 4 +- .../instancemanager/CommissionManager.java | 4 +- .../instancemanager/DBSpawnManager.java | 4 +- .../instancemanager/GraciaSeedsManager.java | 2 +- .../instancemanager/GrandBossManager.java | 2 +- .../HandysBlockCheckerManager.java | 4 +- .../instancemanager/ItemsOnGroundManager.java | 2 +- .../instancemanager/MailManager.java | 6 +- .../instancemanager/PremiumManager.java | 2 +- .../instancemanager/ServerRestartManager.java | 2 +- .../instancemanager/WalkingManager.java | 6 +- .../l2jmobius/gameserver/model/ClanWar.java | 10 +- .../gameserver/model/CreatureContainer.java | 2 +- .../gameserver/model/CursedWeapon.java | 6 +- .../gameserver/model/DropProtection.java | 2 +- .../l2jmobius/gameserver/model/Fishing.java | 4 +- .../l2jmobius/gameserver/model/L2Clan.java | 2 +- .../l2jmobius/gameserver/model/L2Party.java | 4 +- .../l2jmobius/gameserver/model/L2Request.java | 2 +- .../l2jmobius/gameserver/model/L2Spawn.java | 2 +- .../gameserver/model/L2WorldRegion.java | 4 +- .../gameserver/model/MpRewardTask.java | 2 +- .../gameserver/model/actor/L2Attackable.java | 2 +- .../gameserver/model/actor/L2Character.java | 26 +- .../gameserver/model/actor/L2Npc.java | 2 +- .../gameserver/model/actor/L2Vehicle.java | 2 +- .../L2ControllableAirShipInstance.java | 6 +- .../model/actor/instance/L2DecoyInstance.java | 4 +- .../model/actor/instance/L2DoorInstance.java | 6 +- .../instance/L2FortCommanderInstance.java | 2 +- .../model/actor/instance/L2PcInstance.java | 34 +- .../model/actor/instance/L2PetInstance.java | 2 +- .../actor/instance/L2RaceManagerInstance.java | 45 +- .../actor/instance/L2RaidBossInstance.java | 2 +- .../actor/instance/L2ServitorInstance.java | 2 +- .../actor/instance/L2SiegeFlagInstance.java | 2 +- .../actor/instance/L2TamedBeastInstance.java | 8 +- .../model/actor/instance/L2TrapInstance.java | 4 +- .../model/actor/request/AbstractRequest.java | 2 +- .../model/actor/status/CharStatus.java | 2 +- .../tasks/attackable/CommandChannelTimer.java | 2 +- .../actor/tasks/npc/RandomAnimationTask.java | 2 +- .../actor/tasks/npc/trap/TrapTriggerTask.java | 2 +- .../actor/tasks/player/FlyMoveStartTask.java | 2 +- .../model/announce/AutoAnnouncement.java | 4 +- .../gameserver/model/buylist/Product.java | 4 +- .../gameserver/model/cubic/CubicInstance.java | 4 +- .../model/entity/BlockCheckerEngine.java | 14 +- .../gameserver/model/entity/Castle.java | 6 +- .../gameserver/model/entity/ClanHall.java | 6 +- .../gameserver/model/entity/Duel.java | 12 +- .../gameserver/model/entity/Fort.java | 18 +- .../gameserver/model/entity/FortSiege.java | 42 +- .../gameserver/model/entity/Siege.java | 30 +- .../model/eventengine/EventScheduler.java | 6 +- .../model/events/EventDispatcher.java | 20 +- .../model/events/timers/TimerHolder.java | 2 +- .../model/instancezone/Instance.java | 14 +- .../model/itemauction/ItemAuction.java | 2 +- .../itemauction/ItemAuctionInstance.java | 14 +- .../model/items/instance/L2ItemInstance.java | 10 +- .../gameserver/model/olympiad/Olympiad.java | 20 +- .../model/olympiad/OlympiadGameTask.java | 6 +- .../model/punishment/PunishmentTask.java | 2 +- .../gameserver/model/quest/LongTimeEvent.java | 4 +- .../gameserver/model/quest/QuestTimer.java | 2 +- .../model/residences/ResidenceFunction.java | 2 +- .../model/shuttle/L2ShuttleEngine.java | 8 +- .../gameserver/model/skills/BuffInfo.java | 6 +- .../gameserver/model/skills/SkillCaster.java | 4 +- .../model/skills/SkillChannelizer.java | 2 +- .../model/votereward/VoteSystem.java | 2 +- .../model/zone/type/L2DamageZone.java | 2 +- .../model/zone/type/L2EffectZone.java | 2 +- .../model/zone/type/L2FishingZone.java | 4 +- .../model/zone/type/L2JailZone.java | 2 +- .../zone/type/L2OlympiadStadiumZone.java | 2 +- .../type/L2ResidenceHallTeleportZone.java | 2 +- .../model/zone/type/L2SayuneZone.java | 2 +- .../gameserver/network/L2GameClient.java | 8 +- .../network/clientpackets/EnterWorld.java | 2 +- .../clientpackets/RequestPreviewItem.java | 2 +- .../clientpackets/RequestRestartPoint.java | 2 +- .../network/clientpackets/UseItem.java | 2 +- .../taskmanager/AttackStanceTaskManager.java | 2 +- .../gameserver/taskmanager/TaskManager.java | 23 +- .../com/l2jmobius/gameserver/util/Evolve.java | 8 +- .../l2jmobius/gameserver/util/MinionList.java | 2 +- .../com/l2jmobius/gameserver/util/Util.java | 2 +- .../dist/game/config/General.ini | 37 +- .../dist/game/data/html/admin/serverinfo.htm | 26 - .../data/scripts/ai/fantasy_isle/Parade.java | 10 +- .../scripts/ai/group_template/DenOfEvil.java | 6 +- .../ai/group_template/RandomSpawn.java | 2 +- .../data/scripts/ai/individual/QueenAnt.java | 2 +- .../ai/npc/ForgeOfTheGods/TarBeetleSpawn.java | 4 +- .../ai/npc/NpcBuffers/NpcBufferAI.java | 2 +- .../scripts/ai/npc/NpcBuffers/NpcBuffers.java | 2 +- .../ai/npc/NpcBuffers/impl/CabaleBuffer.java | 8 +- .../FortressOfTheDead/FortressOfTheDead.java | 2 +- .../RainbowSpringsChateau.java | 18 +- .../conquerablehalls/flagwar/FlagWar.java | 6 +- .../scripts/custom/events/Elpies/Elpies.java | 2 +- .../data/scripts/custom/events/Race/Race.java | 4 +- .../data/scripts/gracia/AI/EnergySeeds.java | 2 +- .../HallOfErosionAttack.java | 4 +- .../HallOfErosionDefence.java | 8 +- .../HeartInfinityAttack.java | 12 +- .../HeartInfinityDefence.java | 14 +- .../gracia/vehicles/AirShipController.java | 4 +- .../AirShipGludioGracia.java | 8 +- .../admincommandhandlers/AdminEditChar.java | 4 +- .../AdminMonsterRace.java | 4 +- .../admincommandhandlers/AdminPForge.java | 2 +- .../admincommandhandlers/AdminServerInfo.java | 37 +- .../admincommandhandlers/AdminTest.java | 2 +- .../effecthandlers/ServitorShare.java | 2 +- .../punishmenthandlers/JailHandler.java | 4 +- .../handlers/telnethandlers/DebugHandler.java | 50 +- .../telnethandlers/ThreadHandler.java | 6 +- .../handlers/usercommandhandlers/Unstuck.java | 2 +- .../voicedcommandhandlers/Wedding.java | 2 +- .../data/scripts/hellbound/AI/Chimeras.java | 2 +- .../AI/Zones/TowerOfNaia/TowerOfNaia.java | 4 +- .../AI/Zones/TullyWorkshop/TullyWorkshop.java | 14 +- .../Instances/UrbanArea/UrbanArea.java | 8 +- .../instances/ChambersOfDelusion/Chamber.java | 4 +- .../FinalEmperialTomb/FinalEmperialTomb.java | 100 +- .../Q00511_AwlUnderFoot.java | 4 +- .../Q00726_LightWithinTheDarkness.java | 8 +- .../Q00727_HopeWithinTheDarkness.java | 14 +- .../Q10292_SevenSignsGirlOfDoubt.java | 2 +- .../scripts/vehicles/BoatGiranTalking.java | 34 +- .../data/scripts/vehicles/BoatGludinRune.java | 36 +- .../scripts/vehicles/BoatInnadrilTour.java | 18 +- .../scripts/vehicles/BoatRunePrimeval.java | 6 +- .../scripts/vehicles/BoatTalkingGludin.java | 32 +- .../java/com/l2jmobius/Config.java | 24 +- .../com/l2jmobius/gameserver/GameServer.java | 4 +- .../gameserver/GameTimeController.java | 4 +- .../gameserver/ItemsAutoDestroy.java | 2 +- .../gameserver/RecipeController.java | 10 +- .../com/l2jmobius/gameserver/SevenSigns.java | 4 +- .../gameserver/SevenSignsFestival.java | 2 +- .../com/l2jmobius/gameserver/Shutdown.java | 2 +- .../gameserver/ThreadPoolManager.java | 908 ++++------------- .../l2jmobius/gameserver/ai/AbstractAI.java | 4 +- .../gameserver/ai/L2AttackableAI.java | 5 +- .../gameserver/ai/L2CharacterAI.java | 2 +- .../com/l2jmobius/gameserver/ai/L2DoorAI.java | 2 +- .../gameserver/ai/L2FortSiegeGuardAI.java | 2 +- .../gameserver/ai/L2SiegeGuardAI.java | 2 +- .../l2jmobius/gameserver/ai/L2SummonAI.java | 2 +- .../cache/WarehouseCacheManager.java | 2 +- .../gameserver/data/sql/impl/ClanTable.java | 2 +- .../gameserver/datatables/BotReportTable.java | 4 +- .../gameserver/datatables/ItemTable.java | 4 +- .../gameserver/idfactory/BitSetIDFactory.java | 2 +- .../instancemanager/CastleManorManager.java | 5 +- .../FishingChampionshipManager.java | 6 +- .../FourSepulchersManager.java | 8 +- .../instancemanager/GrandBossManager.java | 2 +- .../HandysBlockCheckerManager.java | 4 +- .../instancemanager/ItemsOnGroundManager.java | 2 +- .../instancemanager/MailManager.java | 6 +- .../instancemanager/PremiumManager.java | 2 +- .../instancemanager/RaidBossSpawnManager.java | 4 +- .../instancemanager/ServerRestartManager.java | 2 +- .../instancemanager/SoDManager.java | 2 +- .../instancemanager/SoIManager.java | 2 +- .../instancemanager/TerritoryWarManager.java | 34 +- .../instancemanager/WalkingManager.java | 6 +- .../instancemanager/games/Lottery.java | 10 +- .../FourSepulchersChangeAttackTimeTask.java | 6 +- .../FourSepulchersChangeCoolDownTimeTask.java | 2 +- .../FourSepulchersChangeEntryTimeTask.java | 4 +- .../FourSepulchersChangeWarmUpTimeTask.java | 2 +- .../tasks/FourSepulchersManagerSayTask.java | 2 +- .../gameserver/model/AutoSpawnHandler.java | 6 +- .../gameserver/model/CharEffectList.java | 2 +- .../gameserver/model/CursedWeapon.java | 6 +- .../gameserver/model/DropProtection.java | 2 +- .../l2jmobius/gameserver/model/L2Party.java | 4 +- .../l2jmobius/gameserver/model/L2Request.java | 2 +- .../l2jmobius/gameserver/model/L2Spawn.java | 2 +- .../gameserver/model/L2WorldRegion.java | 4 +- .../gameserver/model/actor/L2Attackable.java | 2 +- .../gameserver/model/actor/L2Character.java | 38 +- .../gameserver/model/actor/L2Npc.java | 4 +- .../gameserver/model/actor/L2Vehicle.java | 2 +- .../actor/instance/L2BabyPetInstance.java | 2 +- .../L2ControllableAirShipInstance.java | 6 +- .../model/actor/instance/L2CubicInstance.java | 6 +- .../model/actor/instance/L2DecoyInstance.java | 4 +- .../model/actor/instance/L2DoorInstance.java | 6 +- .../instance/L2FortCommanderInstance.java | 2 +- .../model/actor/instance/L2PcInstance.java | 38 +- .../model/actor/instance/L2PetInstance.java | 2 +- .../actor/instance/L2RaceManagerInstance.java | 45 +- .../actor/instance/L2RaidBossInstance.java | 2 +- .../instance/L2SepulcherMonsterInstance.java | 16 +- .../instance/L2SepulcherNpcInstance.java | 6 +- .../actor/instance/L2ServitorInstance.java | 2 +- .../actor/instance/L2SiegeFlagInstance.java | 2 +- .../actor/instance/L2TamedBeastInstance.java | 8 +- .../model/actor/instance/L2TrapInstance.java | 4 +- .../model/actor/knownlist/NpcKnownList.java | 2 +- .../model/actor/status/CharStatus.java | 2 +- .../tasks/attackable/CommandChannelTimer.java | 2 +- .../actor/tasks/npc/trap/TrapTriggerTask.java | 2 +- .../model/announce/AutoAnnouncement.java | 4 +- .../gameserver/model/buylist/Product.java | 4 +- .../gameserver/model/entity/Auction.java | 4 +- .../model/entity/BlockCheckerEngine.java | 14 +- .../gameserver/model/entity/Castle.java | 6 +- .../gameserver/model/entity/ClanHall.java | 6 +- .../model/entity/DimensionalRift.java | 2 +- .../gameserver/model/entity/Duel.java | 12 +- .../gameserver/model/entity/Fort.java | 18 +- .../gameserver/model/entity/FortSiege.java | 42 +- .../gameserver/model/entity/Instance.java | 10 +- .../gameserver/model/entity/Message.java | 6 +- .../gameserver/model/entity/NevitSystem.java | 4 +- .../gameserver/model/entity/Siege.java | 30 +- .../model/entity/TvTEventTeleporter.java | 2 +- .../gameserver/model/entity/TvTManager.java | 10 +- .../entity/clanhall/AuctionableHall.java | 18 +- .../entity/clanhall/ClanHallSiegeEngine.java | 12 +- .../gameserver/model/event/LongTimeEvent.java | 4 +- .../model/events/EventDispatcher.java | 20 +- .../gameserver/model/fishing/L2Fishing.java | 2 +- .../model/itemauction/ItemAuction.java | 2 +- .../itemauction/ItemAuctionInstance.java | 14 +- .../model/items/instance/L2ItemInstance.java | 6 +- .../gameserver/model/olympiad/Olympiad.java | 20 +- .../model/olympiad/OlympiadGameTask.java | 6 +- .../model/olympiad/OlympiadManager.java | 4 +- .../model/punishment/PunishmentTask.java | 2 +- .../gameserver/model/quest/QuestTimer.java | 2 +- .../gameserver/model/skills/BuffInfo.java | 4 +- .../model/skills/SkillChannelizer.java | 2 +- .../model/zone/type/L2DamageZone.java | 2 +- .../model/zone/type/L2DynamicZone.java | 2 +- .../model/zone/type/L2EffectZone.java | 2 +- .../model/zone/type/L2JailZone.java | 2 +- .../zone/type/L2OlympiadStadiumZone.java | 2 +- .../type/L2ResidenceHallTeleportZone.java | 2 +- .../gameserver/network/L2GameClient.java | 17 +- .../clientpackets/RequestPreviewItem.java | 2 +- .../clientpackets/RequestRestartPoint.java | 2 +- .../network/clientpackets/UseItem.java | 2 +- .../taskmanager/AttackStanceTaskManager.java | 2 +- .../KnownListUpdateTaskManager.java | 2 +- .../gameserver/taskmanager/TaskManager.java | 9 +- .../com/l2jmobius/gameserver/util/Evolve.java | 8 +- .../l2jmobius/gameserver/util/MinionList.java | 2 +- .../com/l2jmobius/gameserver/util/Util.java | 2 +- .../dist/game/config/General.ini | 36 +- .../dist/game/data/html/admin/serverinfo.htm | 26 - .../ai/areas/DenOfDevil/DenOfEvil.java | 6 +- .../scripts/ai/areas/FantasyIsle/Parade.java | 10 +- .../areas/GainakUnderground/GainakSiege.java | 2 +- .../FourSepulchers/FourSepulchers.java | 4 +- .../AltarOfSacrifice/AltarOfSacrifice.java | 2 +- .../AwakeningMaster/AwakeningMaster.java | 2 +- .../HarnakUndergroundRuinsZone.java | 6 +- .../scripts/ai/bosses/QueenAnt/QueenAnt.java | 2 +- .../data/scripts/ai/others/EnergySeeds.java | 2 +- .../ai/others/NpcBuffers/NpcBufferAI.java | 2 +- .../ai/others/NpcBuffers/NpcBuffers.java | 2 +- .../scripts/custom/events/Elpies/Elpies.java | 2 +- .../data/scripts/custom/events/Race/Race.java | 4 +- .../data/scripts/handlers/MasterHandler.java | 2 - .../AdminMonsterRace.java | 4 +- .../admincommandhandlers/AdminServerInfo.java | 26 - .../admincommandhandlers/AdminTest.java | 2 +- .../handlers/effecthandlers/ClassChange.java | 2 +- .../effecthandlers/ServitorShare.java | 2 +- .../punishmenthandlers/JailHandler.java | 4 +- .../handlers/telnethandlers/server/Debug.java | 88 +- .../telnethandlers/server/Performance.java | 4 +- .../handlers/telnethandlers/server/Purge.java | 4 +- .../server/ThreadPoolDebug.java | 171 ---- .../CastleDungeon/CastleDungeon.java | 5 +- .../ChambersOfDelusion/ChamberOfDelusion.java | 4 +- .../FortressDungeon/FortressDungeon.java | 5 +- .../Q10292_SevenSignsGirlOfDoubt.java | 2 +- .../scripts/vehicles/AirShipController.java | 4 +- .../AirShipGludioGracia.java | 8 +- .../data/scripts/vehicles/BoatGludinRune.java | 36 +- .../scripts/vehicles/BoatInnadrilTour.java | 18 +- .../scripts/vehicles/BoatRunePrimeval.java | 6 +- .../java/com/l2jmobius/Config.java | 22 +- .../com/l2jmobius/gameserver/GameServer.java | 5 +- .../gameserver/ItemsAutoDestroy.java | 2 +- .../gameserver/RecipeController.java | 10 +- .../com/l2jmobius/gameserver/Shutdown.java | 2 +- .../gameserver/ThreadPoolManager.java | 917 ++++-------------- .../l2jmobius/gameserver/ai/AbstractAI.java | 2 +- .../gameserver/ai/L2AttackableAI.java | 2 +- .../gameserver/ai/L2CharacterAI.java | 2 +- .../com/l2jmobius/gameserver/ai/L2DoorAI.java | 2 +- .../gameserver/ai/L2FortSiegeGuardAI.java | 2 +- .../gameserver/ai/L2SiegeGuardAI.java | 2 +- .../l2jmobius/gameserver/ai/L2SummonAI.java | 2 +- .../cache/WarehouseCacheManager.java | 2 +- .../gameserver/data/sql/impl/ClanTable.java | 2 +- .../gameserver/datatables/BotReportTable.java | 4 +- .../gameserver/datatables/ItemTable.java | 4 +- .../gameserver/idfactory/BitSetIDFactory.java | 2 +- .../instancemanager/CastleManorManager.java | 5 +- .../instancemanager/ClanEntryManager.java | 4 +- .../instancemanager/CommissionManager.java | 4 +- .../instancemanager/DBSpawnManager.java | 4 +- .../instancemanager/GraciaSeedsManager.java | 2 +- .../instancemanager/GrandBossManager.java | 2 +- .../HandysBlockCheckerManager.java | 4 +- .../instancemanager/ItemsOnGroundManager.java | 2 +- .../instancemanager/MailManager.java | 6 +- .../instancemanager/PremiumManager.java | 2 +- .../instancemanager/ServerRestartManager.java | 2 +- .../instancemanager/WalkingManager.java | 6 +- .../l2jmobius/gameserver/model/ClanWar.java | 10 +- .../gameserver/model/CreatureContainer.java | 2 +- .../gameserver/model/CursedWeapon.java | 6 +- .../gameserver/model/DropProtection.java | 2 +- .../l2jmobius/gameserver/model/Fishing.java | 4 +- .../l2jmobius/gameserver/model/L2Clan.java | 2 +- .../l2jmobius/gameserver/model/L2Party.java | 4 +- .../l2jmobius/gameserver/model/L2Request.java | 2 +- .../l2jmobius/gameserver/model/L2Spawn.java | 2 +- .../gameserver/model/L2WorldRegion.java | 4 +- .../gameserver/model/MpRewardTask.java | 2 +- .../gameserver/model/actor/L2Attackable.java | 2 +- .../gameserver/model/actor/L2Character.java | 26 +- .../gameserver/model/actor/L2Npc.java | 2 +- .../gameserver/model/actor/L2Vehicle.java | 2 +- .../L2ControllableAirShipInstance.java | 6 +- .../model/actor/instance/L2DecoyInstance.java | 4 +- .../model/actor/instance/L2DoorInstance.java | 6 +- .../instance/L2FortCommanderInstance.java | 2 +- .../model/actor/instance/L2PcInstance.java | 34 +- .../model/actor/instance/L2PetInstance.java | 2 +- .../actor/instance/L2RaceManagerInstance.java | 45 +- .../actor/instance/L2RaidBossInstance.java | 2 +- .../actor/instance/L2ServitorInstance.java | 2 +- .../actor/instance/L2SiegeFlagInstance.java | 2 +- .../actor/instance/L2TamedBeastInstance.java | 8 +- .../model/actor/instance/L2TrapInstance.java | 4 +- .../model/actor/request/AbstractRequest.java | 2 +- .../model/actor/status/CharStatus.java | 2 +- .../tasks/attackable/CommandChannelTimer.java | 2 +- .../actor/tasks/npc/RandomAnimationTask.java | 2 +- .../actor/tasks/npc/trap/TrapTriggerTask.java | 2 +- .../actor/tasks/player/FlyMoveStartTask.java | 2 +- .../model/announce/AutoAnnouncement.java | 4 +- .../gameserver/model/buylist/Product.java | 4 +- .../gameserver/model/cubic/CubicInstance.java | 4 +- .../model/entity/BlockCheckerEngine.java | 14 +- .../gameserver/model/entity/Castle.java | 6 +- .../gameserver/model/entity/ClanHall.java | 6 +- .../gameserver/model/entity/Duel.java | 12 +- .../gameserver/model/entity/Fort.java | 18 +- .../gameserver/model/entity/FortSiege.java | 42 +- .../gameserver/model/entity/Siege.java | 30 +- .../model/eventengine/EventScheduler.java | 6 +- .../model/events/EventDispatcher.java | 20 +- .../model/events/timers/TimerHolder.java | 2 +- .../model/instancezone/Instance.java | 14 +- .../model/itemauction/ItemAuction.java | 2 +- .../itemauction/ItemAuctionInstance.java | 14 +- .../model/items/instance/L2ItemInstance.java | 10 +- .../gameserver/model/olympiad/Olympiad.java | 20 +- .../model/olympiad/OlympiadGameTask.java | 6 +- .../model/punishment/PunishmentTask.java | 2 +- .../gameserver/model/quest/LongTimeEvent.java | 4 +- .../gameserver/model/quest/QuestTimer.java | 2 +- .../model/residences/ResidenceFunction.java | 2 +- .../model/shuttle/L2ShuttleEngine.java | 8 +- .../gameserver/model/skills/BuffInfo.java | 6 +- .../gameserver/model/skills/SkillCaster.java | 4 +- .../model/skills/SkillChannelizer.java | 2 +- .../model/votereward/VoteSystem.java | 2 +- .../model/zone/type/L2DamageZone.java | 2 +- .../model/zone/type/L2EffectZone.java | 2 +- .../model/zone/type/L2FishingZone.java | 4 +- .../model/zone/type/L2JailZone.java | 2 +- .../zone/type/L2OlympiadStadiumZone.java | 2 +- .../type/L2ResidenceHallTeleportZone.java | 2 +- .../model/zone/type/L2SayuneZone.java | 2 +- .../gameserver/network/L2GameClient.java | 8 +- .../network/clientpackets/EnterWorld.java | 2 +- .../clientpackets/RequestPreviewItem.java | 2 +- .../clientpackets/RequestRestartPoint.java | 2 +- .../network/clientpackets/UseItem.java | 2 +- .../taskmanager/AttackStanceTaskManager.java | 2 +- .../gameserver/taskmanager/TaskManager.java | 23 +- .../com/l2jmobius/gameserver/util/Evolve.java | 8 +- .../l2jmobius/gameserver/util/MinionList.java | 2 +- .../com/l2jmobius/gameserver/util/Util.java | 2 +- 718 files changed, 3180 insertions(+), 7193 deletions(-) delete mode 100644 L2J_Mobius_Classic/dist/game/data/scripts/handlers/telnethandlers/server/ThreadPoolDebug.java delete mode 100644 L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/telnethandlers/server/ThreadPoolDebug.java delete mode 100644 L2J_Mobius_Helios/dist/game/data/scripts/handlers/telnethandlers/server/ThreadPoolDebug.java delete mode 100644 L2J_Mobius_Underground/dist/game/data/scripts/handlers/telnethandlers/server/ThreadPoolDebug.java diff --git a/L2J_Mobius_Classic/dist/game/config/General.ini b/L2J_Mobius_Classic/dist/game/config/General.ini index 0f135ae918..676d1a7a23 100644 --- a/L2J_Mobius_Classic/dist/game/config/General.ini +++ b/L2J_Mobius_Classic/dist/game/config/General.ini @@ -132,33 +132,29 @@ SkillCheckGM = False # Thread Configuration # --------------------------------------------------------------------------- -# Extreme caution should be here, set to defaults if you do not know what you are doing. -# These could possibly hurt your servers performance or improve it depending on your server's configuration, size, and other factors. -# Default: 10 -ThreadPoolSizeEffects = 50 +# Determines the amount of scheduled thread pools. If set to -1, the server will decide the amount depending on the available processors. +Default: -1 +ScheduledThreadPoolCount = -1 -# Default: 13 -ThreadPoolSizeGeneral = 65 +# Specifies how many threads will be in a single scheduled pool. +Default: 4 +ThreadsPerScheduledThreadPool = 40 -# Default: 2 -ThreadPoolSizeEvents = 10 +# Determines the amount of instant thread pools. If set to -1, the server will decide the amount depending on the available processors. +Default: -1 +InstantThreadPoolCount = -1 + +# Specifies how many threads will be in a single instant pool. +Default: 2 +ThreadsPerInstantThreadPool = 20 # Default: 2 UrgentPacketThreadCoreSize = 20 -# Default: 4 -GeneralPacketThreadCoreSize = 20 -# Default: 4 -GeneralThreadCoreSize = 20 - -# Default: 6 -AiMaxThread = 30 - -# Default: 5 -EventsMaxThread = 25 - -# Dead Lock Detector (a separate thread for detecting deadlocks). +# --------------------------------------------------------------------------- +# Dead Lock Detector (separate thread for detecting deadlocks) +# --------------------------------------------------------------------------- # For improved crash logs and automatic restart in deadlock case if enabled. # Check interval is in seconds. # Default: True diff --git a/L2J_Mobius_Classic/dist/game/data/html/admin/serverinfo.htm b/L2J_Mobius_Classic/dist/game/data/html/admin/serverinfo.htm index cf06c95dc3..84dd350f5c 100644 --- a/L2J_Mobius_Classic/dist/game/data/html/admin/serverinfo.htm +++ b/L2J_Mobius_Classic/dist/game/data/html/admin/serverinfo.htm @@ -8,7 +8,6 @@
-
General: @@ -76,30 +75,5 @@
%totalMem% MB
-
-Thread - General (STP): - %theardInfoGen% -
-Thread - Effects (STP): - %theardInfoEff% -
-Thread - AI (STP): - %theardInfoAi% -
-Thread - Event (STP): - %theardInfoEvent% -
-Thread - Packets (TP): - %theardInfoPack% -
-Thread - I/O Packets (TP): - %theardInfoIOPack% -
-Thread - General Tasks (TP): - %theardInfoGenTask% -
-Thread - Event Tasks (TP): - %theardInfoEvnTask% -
\ No newline at end of file diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/bosses/QueenAnt/QueenAnt.java b/L2J_Mobius_Classic/dist/game/data/scripts/ai/bosses/QueenAnt/QueenAnt.java index 65c2ebbf40..6c0a28cefe 100644 --- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/bosses/QueenAnt/QueenAnt.java +++ b/L2J_Mobius_Classic/dist/game/data/scripts/ai/bosses/QueenAnt/QueenAnt.java @@ -258,7 +258,7 @@ public final class QueenAnt extends AbstractNpcAI { ((L2MonsterInstance) npc).getMinionList().spawnMinions(npc.getParameters().getMinionList("Privates")); } - _task = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new QueenAntTask(), 5 * 1000, 5 * 1000); + _task = ThreadPoolManager.scheduleAtFixedRate(new QueenAntTask(), 5 * 1000, 5 * 1000); break; } } diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/custom/events/Elpies/Elpies.java b/L2J_Mobius_Classic/dist/game/data/scripts/custom/events/Elpies/Elpies.java index 93bb20bf3c..f8601fd797 100644 --- a/L2J_Mobius_Classic/dist/game/data/scripts/custom/events/Elpies/Elpies.java +++ b/L2J_Mobius_Classic/dist/game/data/scripts/custom/events/Elpies/Elpies.java @@ -112,7 +112,7 @@ public final class Elpies extends Event Broadcast.toAllOnlinePlayers("Help us exterminate them!"); Broadcast.toAllOnlinePlayers("You have " + EVENT_DURATION_MINUTES + " minutes!"); - _eventTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _eventTask = ThreadPoolManager.schedule(() -> { Broadcast.toAllOnlinePlayers("Time is up!"); eventStop(); diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/custom/events/Race/Race.java b/L2J_Mobius_Classic/dist/game/data/scripts/custom/events/Race/Race.java index d4f444d6c8..54832d23fd 100644 --- a/L2J_Mobius_Classic/dist/game/data/scripts/custom/events/Race/Race.java +++ b/L2J_Mobius_Classic/dist/game/data/scripts/custom/events/Race/Race.java @@ -138,7 +138,7 @@ public final class Race extends Event Broadcast.toAllOnlinePlayers("Visit Event Manager in Dion village and signup, you have " + _time_register + " min before Race Start..."); // Schedule Event end - _eventTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> StartRace(), _time_register * 60 * 1000); + _eventTask = ThreadPoolManager.schedule(() -> StartRace(), _time_register * 60 * 1000); return true; @@ -181,7 +181,7 @@ public final class Race extends Event } } // Schedule timeup for Race - _eventTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> timeUp(), _time_race * 60 * 1000); + _eventTask = ThreadPoolManager.schedule(() -> timeUp(), _time_race * 60 * 1000); } @Override diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_Mobius_Classic/dist/game/data/scripts/handlers/MasterHandler.java index 56685624b8..36f9c9e070 100644 --- a/L2J_Mobius_Classic/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_Mobius_Classic/dist/game/data/scripts/handlers/MasterHandler.java @@ -309,7 +309,6 @@ import handlers.telnethandlers.server.ServerAbort; import handlers.telnethandlers.server.ServerRestart; import handlers.telnethandlers.server.ServerShutdown; import handlers.telnethandlers.server.Status; -import handlers.telnethandlers.server.ThreadPoolDebug; import handlers.usercommandhandlers.ChannelDelete; import handlers.usercommandhandlers.ChannelInfo; import handlers.usercommandhandlers.ChannelLeave; @@ -751,7 +750,6 @@ public class MasterHandler TelnetServer.getInstance().addHandler(new ServerRestart()); TelnetServer.getInstance().addHandler(new ServerShutdown()); TelnetServer.getInstance().addHandler(new Status()); - TelnetServer.getInstance().addHandler(new ThreadPoolDebug()); TelnetServer.getInstance().addHandler(new handlers.telnethandlers.server.Debug()); } diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/handlers/admincommandhandlers/AdminServerInfo.java b/L2J_Mobius_Classic/dist/game/data/scripts/handlers/admincommandhandlers/AdminServerInfo.java index 12a2f312c2..6796381333 100644 --- a/L2J_Mobius_Classic/dist/game/data/scripts/handlers/admincommandhandlers/AdminServerInfo.java +++ b/L2J_Mobius_Classic/dist/game/data/scripts/handlers/admincommandhandlers/AdminServerInfo.java @@ -20,14 +20,12 @@ import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Date; import java.util.HashSet; -import java.util.Map.Entry; import java.util.Set; import java.util.concurrent.TimeUnit; import com.l2jmobius.Config; import com.l2jmobius.gameserver.GameServer; import com.l2jmobius.gameserver.GameTimeController; -import com.l2jmobius.gameserver.ThreadPoolManager; import com.l2jmobius.gameserver.cache.HtmCache; import com.l2jmobius.gameserver.data.xml.impl.AdminData; import com.l2jmobius.gameserver.handler.IAdminCommandHandler; @@ -72,14 +70,6 @@ public class AdminServerInfo implements IAdminCommandHandler html.replace("%usedMem%", (RunTime.maxMemory() / mb) - (((RunTime.maxMemory() - RunTime.totalMemory()) + RunTime.freeMemory()) / mb)); html.replace("%freeMem%", ((RunTime.maxMemory() - RunTime.totalMemory()) + RunTime.freeMemory()) / mb); html.replace("%totalMem%", Runtime.getRuntime().maxMemory() / 1048576); - html.replace("%theardInfoGen%", buildTheardInfo("GENERAL")); - html.replace("%theardInfoEff%", buildTheardInfo("EFFECTS")); - html.replace("%theardInfoAi%", buildTheardInfo("AI")); - html.replace("%theardInfoEvent%", buildTheardInfo("EVENT")); - html.replace("%theardInfoPack%", buildTheardInfo("PACKETS")); - html.replace("%theardInfoIOPack%", buildTheardInfo("IOPACKETS")); - html.replace("%theardInfoGenTask%", buildTheardInfo("GENERAL_TASKS")); - html.replace("%theardInfoEvnTask%", buildTheardInfo("EVENT_TASKS")); activeChar.sendPacket(html); } return true; @@ -96,22 +86,6 @@ public class AdminServerInfo implements IAdminCommandHandler return days + " Days, " + hours + " Hours, " + TimeUnit.MILLISECONDS.toMinutes(time) + " Minutes"; } - private String buildTheardInfo(String category) - { - final StringBuilder tb = new StringBuilder(); - - tb.append(""); - for (Entry info : ThreadPoolManager.getInstance().getStats(category).getSet().entrySet()) - { - tb.append(""); - tb.append(""); - tb.append(""); - tb.append(""); - } - tb.append("
" + info.getKey() + ":" + info.getValue() + "
"); - return tb.toString(); - } - private int getPlayersCount(String type) { switch (type) diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/handlers/admincommandhandlers/AdminTest.java b/L2J_Mobius_Classic/dist/game/data/scripts/handlers/admincommandhandlers/AdminTest.java index 3033172007..b64a8a1504 100644 --- a/L2J_Mobius_Classic/dist/game/data/scripts/handlers/admincommandhandlers/AdminTest.java +++ b/L2J_Mobius_Classic/dist/game/data/scripts/handlers/admincommandhandlers/AdminTest.java @@ -46,7 +46,7 @@ public class AdminTest implements IAdminCommandHandler { if (command.equals("admin_stats")) { - for (String line : ThreadPoolManager.getInstance().getStats()) + for (String line : ThreadPoolManager.getStats()) { activeChar.sendMessage(line); } diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java b/L2J_Mobius_Classic/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java index 84f3d3d721..bd3295b928 100644 --- a/L2J_Mobius_Classic/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java +++ b/L2J_Mobius_Classic/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java @@ -57,7 +57,7 @@ public class ClassChange extends AbstractEffect { final L2PcInstance player = effected.getActingPlayer(); // TODO: FIX ME - Executing 1 second later otherwise interupted exception during storeCharBase() - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { final int activeClass = player.getClassId().getId(); diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/handlers/effecthandlers/ServitorShare.java b/L2J_Mobius_Classic/dist/game/data/scripts/handlers/effecthandlers/ServitorShare.java index 41b8a93749..02f29f0a1a 100644 --- a/L2J_Mobius_Classic/dist/game/data/scripts/handlers/effecthandlers/ServitorShare.java +++ b/L2J_Mobius_Classic/dist/game/data/scripts/handlers/effecthandlers/ServitorShare.java @@ -67,7 +67,7 @@ public final class ServitorShare extends AbstractEffect if (effected != null) { - ThreadPoolManager.getInstance().scheduleEffect(new ScheduledEffectExitTask(effected, info.getSkill().getId()), 100); + ThreadPoolManager.schedule(new ScheduledEffectExitTask(effected, info.getSkill().getId()), 100); } } } diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/handlers/punishmenthandlers/JailHandler.java b/L2J_Mobius_Classic/dist/game/data/scripts/handlers/punishmenthandlers/JailHandler.java index ad753cf33d..6618f26888 100644 --- a/L2J_Mobius_Classic/dist/game/data/scripts/handlers/punishmenthandlers/JailHandler.java +++ b/L2J_Mobius_Classic/dist/game/data/scripts/handlers/punishmenthandlers/JailHandler.java @@ -162,7 +162,7 @@ public class JailHandler implements IPunishmentHandler OlympiadManager.getInstance().removeDisconnectedCompetitor(player); } - ThreadPoolManager.getInstance().scheduleGeneral(new TeleportTask(player, L2JailZone.getLocationIn()), 2000); + ThreadPoolManager.schedule(new TeleportTask(player, L2JailZone.getLocationIn()), 2000); // Open a Html message to inform the player final NpcHtmlMessage msg = new NpcHtmlMessage(); @@ -198,7 +198,7 @@ public class JailHandler implements IPunishmentHandler */ private static void removeFromPlayer(L2PcInstance player) { - ThreadPoolManager.getInstance().scheduleGeneral(new TeleportTask(player, L2JailZone.getLocationOut()), 2000); + ThreadPoolManager.schedule(new TeleportTask(player, L2JailZone.getLocationOut()), 2000); // Open a Html message to inform the player final NpcHtmlMessage msg = new NpcHtmlMessage(); diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/handlers/telnethandlers/server/Debug.java b/L2J_Mobius_Classic/dist/game/data/scripts/handlers/telnethandlers/server/Debug.java index c58d8b8bc4..612ca5cdc7 100644 --- a/L2J_Mobius_Classic/dist/game/data/scripts/handlers/telnethandlers/server/Debug.java +++ b/L2J_Mobius_Classic/dist/game/data/scripts/handlers/telnethandlers/server/Debug.java @@ -68,7 +68,7 @@ public class Debug implements ITelnetCommand @Override public String getUsage() { - return "Debug "; + return "Debug "; } @Override @@ -108,90 +108,6 @@ public class Debug implements ITelnetCommand player.sendPacket(sp); return "Packet has been sent!"; } - case "PacketTP": - { - final String str = ThreadPoolManager.getInstance().getPacketStats(); - int i = 0; - File f = new File("./log/StackTrace-PacketTP-" + i + ".txt"); - while (f.exists()) - { - i++; - f = new File("./log/StackTrace-PacketTP-" + i + ".txt"); - } - f.getParentFile().mkdirs(); - try - { - Files.write(f.toPath(), str.getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE); - } - catch (IOException e) - { - LOGGER.log(Level.WARNING, "Couldn't write packet tp.", e); - } - return str; - } - case "IOPacketTP": - { - final String str = ThreadPoolManager.getInstance().getIOPacketStats(); - int i = 0; - File f = new File("./log/StackTrace-IOPacketTP-" + i + ".txt"); - while (f.exists()) - { - i++; - f = new File("./log/StackTrace-IOPacketTP-" + i + ".txt"); - } - f.getParentFile().mkdirs(); - try - { - Files.write(f.toPath(), str.getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE); - } - catch (IOException e) - { - LOGGER.log(Level.WARNING, "Couldn't write packet tp.", e); - } - return str; - } - case "GeneralTP": - { - final String str = ThreadPoolManager.getInstance().getGeneralStats(); - int i = 0; - File f = new File("./log/StackTrace-GeneralTP-" + i + ".txt"); - while (f.exists()) - { - i++; - f = new File("./log/StackTrace-GeneralTP-" + i + ".txt"); - } - f.getParentFile().mkdirs(); - try - { - Files.write(f.toPath(), str.getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE); - } - catch (IOException e) - { - LOGGER.log(Level.WARNING, "Couldn't write packet tp.", e); - } - return str; - } - case "GeneralScheduledTP": - { - final String str = ThreadPoolManager.getInstance().getGeneralStats(); - int i = 0; - File f = new File("./log/StackTrace-GeneralScheduledTP-" + i + ".txt"); - while (f.exists()) - { - i++; - f = new File("./log/StackTrace-GeneralScheduledTP-" + i + ".txt"); - } - f.getParentFile().mkdirs(); - try - { - Files.write(f.toPath(), str.getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE); - } - catch (IOException e) - { - LOGGER.log(Level.WARNING, "Couldn't write packet tp.", e); - } - return str; - } case "full": { final Calendar cal = Calendar.getInstance(); @@ -283,7 +199,7 @@ public class Debug implements ITelnetCommand } sb.append("\r\n## Thread Pool Manager Statistics ##\r\n"); - for (String line : ThreadPoolManager.getInstance().getStats()) + for (String line : ThreadPoolManager.getStats()) { sb.append(line); sb.append("\r\n"); diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/handlers/telnethandlers/server/Performance.java b/L2J_Mobius_Classic/dist/game/data/scripts/handlers/telnethandlers/server/Performance.java index 7c609ac673..4ca843967c 100644 --- a/L2J_Mobius_Classic/dist/game/data/scripts/handlers/telnethandlers/server/Performance.java +++ b/L2J_Mobius_Classic/dist/game/data/scripts/handlers/telnethandlers/server/Performance.java @@ -42,9 +42,9 @@ public class Performance implements ITelnetCommand @Override public String handle(ChannelHandlerContext ctx, String[] args) { - ThreadPoolManager.getInstance().purge(); + // ThreadPoolManager.purge(); final StringBuilder sb = new StringBuilder(); - for (String line : ThreadPoolManager.getInstance().getStats()) + for (String line : ThreadPoolManager.getStats()) { sb.append(line + Config.EOL); } diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/handlers/telnethandlers/server/Purge.java b/L2J_Mobius_Classic/dist/game/data/scripts/handlers/telnethandlers/server/Purge.java index 71f7c52abc..0ae4d70bdf 100644 --- a/L2J_Mobius_Classic/dist/game/data/scripts/handlers/telnethandlers/server/Purge.java +++ b/L2J_Mobius_Classic/dist/game/data/scripts/handlers/telnethandlers/server/Purge.java @@ -42,9 +42,9 @@ public class Purge implements ITelnetCommand @Override public String handle(ChannelHandlerContext ctx, String[] args) { - ThreadPoolManager.getInstance().purge(); + ThreadPoolManager.purge(); final StringBuilder sb = new StringBuilder("STATUS OF THREAD POOLS AFTER PURGE COMMAND:" + Config.EOL); - for (String line : ThreadPoolManager.getInstance().getStats()) + for (String line : ThreadPoolManager.getStats()) { sb.append(line + Config.EOL); } diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/handlers/telnethandlers/server/ThreadPoolDebug.java b/L2J_Mobius_Classic/dist/game/data/scripts/handlers/telnethandlers/server/ThreadPoolDebug.java deleted file mode 100644 index f984c7f2cb..0000000000 --- a/L2J_Mobius_Classic/dist/game/data/scripts/handlers/telnethandlers/server/ThreadPoolDebug.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.telnethandlers.server; - -import java.lang.reflect.Field; -import java.util.Comparator; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.FutureTask; -import java.util.concurrent.ScheduledThreadPoolExecutor; -import java.util.logging.Level; -import java.util.logging.Logger; - -import com.l2jmobius.Config; -import com.l2jmobius.gameserver.ThreadPoolManager; -import com.l2jmobius.gameserver.ThreadPoolManager.RunnableWrapper; -import com.l2jmobius.gameserver.network.telnet.ITelnetCommand; - -import io.netty.channel.ChannelHandlerContext; - -/** - * @author UnAfraid - */ -public class ThreadPoolDebug implements ITelnetCommand -{ - private static final Logger LOGGER = Logger.getLogger(ThreadPoolDebug.class.getName()); - - @Override - public String getCommand() - { - return "threadpooldebug"; - } - - @Override - public String getUsage() - { - return "threadpooldebug [effect, general, ai, events]"; - } - - @Override - public String handle(ChannelHandlerContext ctx, String[] args) - { - String pool = "_generalScheduledThreadPool"; - if (args.length > 0) - { - switch (args[0]) - { - case "effect": - { - pool = "_effectsScheduledThreadPool"; - break; - } - case "general": - { - pool = "_generalScheduledThreadPool"; - break; - } - case "ai": - { - pool = "_aiScheduledThreadPool"; - break; - } - case "events": - { - pool = "_eventScheduledThreadPool"; - break; - } - default: - { - return args[0] + " is not implemented!"; - } - } - } - final ScheduledThreadPoolExecutor executor = getObject(ThreadPoolManager.class, ThreadPoolManager.getInstance(), pool, ScheduledThreadPoolExecutor.class); - if (executor == null) - { - return "Couldn't retreive " + pool + "!"; - } - - Class adapterClass; - try - { - adapterClass = Class.forName("java.util.concurrent.Executors$RunnableAdapter"); - } - catch (Exception e) - { - return e.getMessage(); - } - - final Map tasks = new HashMap<>(); - for (Runnable run : executor.getQueue()) - { - try - { - if (run instanceof FutureTask) - { - final Object callableObject = getObject(FutureTask.class, run, "callable", Object.class); - final Object taskObject = getObject(adapterClass, callableObject, "task", Object.class); - - if (taskObject instanceof RunnableWrapper) - { - final Runnable task = getObject(RunnableWrapper.class, taskObject, "_r", Runnable.class); - final String name = task.getClass().getName(); - final int times = tasks.containsKey(name) ? tasks.get(name) : 0; - tasks.put(name, times + 1); - } - } - } - catch (Exception e) - { - e.printStackTrace(); - } - } - - final StringBuilder sb = new StringBuilder(); - sb.append(pool + " queue size: " + executor.getQueue().size() + Config.EOL); - - tasks.entrySet().stream().sorted(Comparator.comparingInt(Entry::getValue)).forEach(entry -> sb.append("Class: " + entry.getKey() + " = " + entry.getValue() + Config.EOL)); - - return sb.toString(); - } - - private static T getObject(Class sourceClass, Object sourceInstance, String fieldName, Class targetClass) - { - try - { - final Field field = sourceClass.getDeclaredField(fieldName); - - // Mark down if field was accessible - final boolean isAccessible = field.isAccessible(); - - // Enforce accessible to retrieve the object associated with this field - if (!isAccessible) - { - field.setAccessible(true); - } - - // Get the object - final Object fieldObject = field.get(sourceInstance); - - // Restore the original accessible state. - field.setAccessible(isAccessible); - - // Make sure the object is the one we expect to be - if (targetClass.isInstance(fieldObject)) - { - return targetClass.cast(fieldObject); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Error while retrieving object of " + sourceInstance.getClass().getName() + "." + fieldName, e); - } - return null; - } -} diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/Config.java b/L2J_Mobius_Classic/java/com/l2jmobius/Config.java index 40d3fd97a7..2d7a47c3a8 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/Config.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/Config.java @@ -428,14 +428,11 @@ public final class Config public static boolean ALT_DEV_NO_SPAWNS; public static boolean ALT_DEV_SHOW_QUESTS_LOAD_IN_LOGS; public static boolean ALT_DEV_SHOW_SCRIPTS_LOAD_IN_LOGS; - public static int THREAD_P_EFFECTS; - public static int THREAD_P_GENERAL; - public static int THREAD_E_EVENTS; - public static int GENERAL_PACKET_THREAD_CORE_SIZE; + public static int SCHEDULED_THREAD_POOL_COUNT; + public static int THREADS_PER_SCHEDULED_THREAD_POOL; + public static int INSTANT_THREAD_POOL_COUNT; + public static int THREADS_PER_INSTANT_THREAD_POOL; public static int IO_PACKET_THREAD_CORE_SIZE; - public static int GENERAL_THREAD_CORE_SIZE; - public static int AI_MAX_THREAD; - public static int EVENT_MAX_THREAD; public static boolean DEADLOCK_DETECTOR; public static int DEADLOCK_CHECK_INTERVAL; public static boolean RESTART_ON_DEADLOCK; @@ -1708,14 +1705,11 @@ public final class Config ALT_DEV_NO_SPAWNS = General.getBoolean("AltDevNoSpawns", false) || Boolean.getBoolean("nospawns"); ALT_DEV_SHOW_QUESTS_LOAD_IN_LOGS = General.getBoolean("AltDevShowQuestsLoadInLogs", false); ALT_DEV_SHOW_SCRIPTS_LOAD_IN_LOGS = General.getBoolean("AltDevShowScriptsLoadInLogs", false); - THREAD_P_EFFECTS = General.getInt("ThreadPoolSizeEffects", 10); - THREAD_P_GENERAL = General.getInt("ThreadPoolSizeGeneral", 13); - THREAD_E_EVENTS = General.getInt("ThreadPoolSizeEvents", 2); + SCHEDULED_THREAD_POOL_COUNT = General.getInt("ScheduledThreadPoolCount", -1); + THREADS_PER_SCHEDULED_THREAD_POOL = General.getInt("ThreadsPerScheduledThreadPool", 4); + INSTANT_THREAD_POOL_COUNT = General.getInt("InstantThreadPoolCount", -1); + THREADS_PER_INSTANT_THREAD_POOL = General.getInt("ThreadsPerInstantThreadPool", 2); IO_PACKET_THREAD_CORE_SIZE = General.getInt("UrgentPacketThreadCoreSize", 2); - GENERAL_PACKET_THREAD_CORE_SIZE = General.getInt("GeneralPacketThreadCoreSize", 4); - GENERAL_THREAD_CORE_SIZE = General.getInt("GeneralThreadCoreSize", 4); - AI_MAX_THREAD = General.getInt("AiMaxThread", 6); - EVENT_MAX_THREAD = General.getInt("EventsMaxThread", 5); DEADLOCK_DETECTOR = General.getBoolean("DeadLockDetector", true); DEADLOCK_CHECK_INTERVAL = General.getInt("DeadLockCheckInterval", 20); RESTART_ON_DEADLOCK = General.getBoolean("RestartOnDeadlock", false); diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/GameServer.java index 059111d31f..46a90b3e91 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/GameServer.java @@ -174,13 +174,15 @@ public class GameServer { final long serverLoadStart = System.currentTimeMillis(); + printSection("IdFactory"); if (!IdFactory.getInstance().isInitialized()) { LOGGER.severe(getClass().getSimpleName() + ": Could not read object IDs from database. Please check your configuration."); throw new Exception("Could not initialize the ID factory"); } - ThreadPoolManager.getInstance(); + printSection("ThreadPool"); + ThreadPoolManager.init(); EventDispatcher.getInstance(); // load script engines diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ItemsAutoDestroy.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ItemsAutoDestroy.java index c2a3271697..777bcbbd43 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ItemsAutoDestroy.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ItemsAutoDestroy.java @@ -31,7 +31,7 @@ public final class ItemsAutoDestroy protected ItemsAutoDestroy() { - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this::removeItems, 5000, 5000); + ThreadPoolManager.scheduleAtFixedRate(this::removeItems, 5000, 5000); } public static ItemsAutoDestroy getInstance() diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/RecipeController.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/RecipeController.java index 05e4b8586c..a84a29cd81 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/RecipeController.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/RecipeController.java @@ -109,7 +109,7 @@ public class RecipeController if (Config.ALT_GAME_CREATION) { _activeMakers.put(manufacturer.getObjectId(), maker); - ThreadPoolManager.getInstance().scheduleGeneral(maker, 100); + ThreadPoolManager.schedule(maker, 100); } else { @@ -158,7 +158,7 @@ public class RecipeController if (Config.ALT_GAME_CREATION) { _activeMakers.put(player.getObjectId(), maker); - ThreadPoolManager.getInstance().scheduleGeneral(maker, 100); + ThreadPoolManager.schedule(maker, 100); } else { @@ -354,7 +354,7 @@ public class RecipeController _player.broadcastPacket(msk); _player.sendPacket(new SetupGauge(_player.getObjectId(), 0, _delay)); - ThreadPoolManager.getInstance().scheduleGeneral(this, 100 + _delay); + ThreadPoolManager.schedule(this, 100 + _delay); } else { @@ -548,7 +548,7 @@ public class RecipeController if (Config.ALT_GAME_CREATION && isWait) { _player.sendPacket(new SetupGauge(_player.getObjectId(), 0, _delay)); - ThreadPoolManager.getInstance().scheduleGeneral(this, 100 + _delay); + ThreadPoolManager.schedule(this, 100 + _delay); } else { @@ -570,7 +570,7 @@ public class RecipeController if (Config.ALT_GAME_CREATION && isWait) { _player.sendPacket(new SetupGauge(_player.getObjectId(), 0, _delay)); - ThreadPoolManager.getInstance().scheduleGeneral(this, 100 + _delay); + ThreadPoolManager.schedule(this, 100 + _delay); } else { diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/Shutdown.java index 81dc2f141a..369510db24 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/Shutdown.java @@ -215,7 +215,7 @@ public class Shutdown extends Thread // stop all thread pools try { - ThreadPoolManager.getInstance().shutdown(); + ThreadPoolManager.shutdown(); LOGGER.info("Thread Pool Manager: Manager has been shut down(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); } catch (Throwable t) diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ThreadPoolManager.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ThreadPoolManager.java index 7e4beb26eb..5d85cdee27 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ThreadPoolManager.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ThreadPoolManager.java @@ -16,803 +16,284 @@ */ package com.l2jmobius.gameserver; -import java.lang.Thread.UncaughtExceptionHandler; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.RejectedExecutionException; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledThreadPoolExecutor; -import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.logging.Level; import java.util.logging.Logger; import com.l2jmobius.Config; -import com.l2jmobius.gameserver.model.StatsSet; /** + * This class handles thread pooling system. It relies on two ThreadPoolExecutor arrays, which poolers number is generated using config. *

- * This class is made to handle all the ThreadPools used in L2J. + * Those arrays hold following pools : *

- *

- * Scheduled Tasks can either be sent to a {@link #_generalScheduledThreadPool "general"} or {@link #_effectsScheduledThreadPool "effects"} {@link ScheduledThreadPoolExecutor ScheduledThreadPool}: The "effects" one is used for every effects (skills, hp/mp regen ...) while the "general" one is used - * for everything else that needs to be scheduled.
- * There also is an {@link #_aiScheduledThreadPool "ai"} {@link ScheduledThreadPoolExecutor ScheduledThreadPool} used for AI Tasks. - *

- *

- * Tasks can be sent to {@link ScheduledThreadPoolExecutor ScheduledThreadPool} either with: *

    - *
  • {@link #scheduleEffect(Runnable, long, TimeUnit)} and {@link #scheduleEffect(Runnable, long)} : for effects Tasks that needs to be executed only once.
  • - *
  • {@link #scheduleGeneral(Runnable, long, TimeUnit)} and {@link #scheduleGeneral(Runnable, long)} : for scheduled Tasks that needs to be executed once.
  • - *
  • {@link #scheduleAi(Runnable, long, TimeUnit)} and {@link #scheduleAi(Runnable, long)} : for AI Tasks that needs to be executed once
  • + *
  • Scheduled pool keeps a track about incoming, future events.
  • + *
  • Instant pool handles short-life events.
  • *
- * or - *
    - *
  • {@link #scheduleEffectAtFixedRate(Runnable, long, long, TimeUnit)} and {@link #scheduleEffectAtFixedRate(Runnable, long, long)} : for effects Tasks that needs to be executed periodicaly.
  • - *
  • {@link #scheduleGeneralAtFixedRate(Runnable, long, long, TimeUnit)} and {@link #scheduleGeneralAtFixedRate(Runnable, long, long)} : for scheduled Tasks that needs to be executed periodicaly.
  • - *
  • {@link #scheduleAiAtFixedRate(Runnable, long, long, TimeUnit)} and {@link #scheduleAiAtFixedRate(Runnable, long, long)} : for AI Tasks that needs to be executed periodicaly
  • - *
- *

- *

- * For all Tasks that should be executed with no delay asynchronously in a ThreadPool there also are usual {@link ThreadPoolExecutor ThreadPools} that can grow/shrink according to their load.: - *

    - *
  • {@link #_generalPacketsThreadPool GeneralPackets} where most packets handler are executed.
  • - *
  • {@link #_ioPacketsThreadPool I/O Packets} where all the i/o packets are executed.
  • - *
  • There will be an AI ThreadPool where AI events should be executed
  • - *
  • A general ThreadPool where everything else that needs to run asynchronously with no delay should be executed updates, SQL updates/inserts...)?
  • - *
- *

- * @author -Wooden- */ -public class ThreadPoolManager +public final class ThreadPoolManager { - private static final Logger LOGGER = Logger.getLogger(ThreadPoolManager.class.getName()); + protected static final Logger LOG = Logger.getLogger(ThreadPoolManager.class.getName()); - public static final class RunnableWrapper implements Runnable + private static final long MAX_DELAY = TimeUnit.NANOSECONDS.toMillis(Long.MAX_VALUE - System.nanoTime()) / 2; + + private static int _threadPoolRandomizer; + + protected static ScheduledThreadPoolExecutor[] _scheduledPools; + protected static ThreadPoolExecutor[] _instantPools; + + /** + * Init the different pools, based on Config. It is launched only once, on Gameserver instance. + */ + public static void init() { - private final Runnable _r; - - public RunnableWrapper(Runnable r) + // Feed scheduled pool. + int poolCount = Config.SCHEDULED_THREAD_POOL_COUNT; + if (poolCount == -1) { - _r = r; + poolCount = Runtime.getRuntime().availableProcessors(); } - @Override - public final void run() + _scheduledPools = new ScheduledThreadPoolExecutor[poolCount]; + for (int i = 0; i < poolCount; i++) { - try - { - _r.run(); - } - catch (Throwable e) - { - final Thread t = Thread.currentThread(); - final UncaughtExceptionHandler h = t.getUncaughtExceptionHandler(); - if (h != null) - { - h.uncaughtException(t, e); - } - } + _scheduledPools[i] = new ScheduledThreadPoolExecutor(Config.THREADS_PER_SCHEDULED_THREAD_POOL); } - } - - protected ScheduledThreadPoolExecutor _effectsScheduledThreadPool; - protected ScheduledThreadPoolExecutor _generalScheduledThreadPool; - protected ScheduledThreadPoolExecutor _aiScheduledThreadPool; - protected ScheduledThreadPoolExecutor _eventScheduledThreadPool; - private final ThreadPoolExecutor _generalPacketsThreadPool; - private final ThreadPoolExecutor _ioPacketsThreadPool; - private final ThreadPoolExecutor _generalThreadPool; - private final ThreadPoolExecutor _eventThreadPool; - - private boolean _shutdown; - - public static ThreadPoolManager getInstance() - { - return SingletonHolder._instance; - } - - protected ThreadPoolManager() - { - _effectsScheduledThreadPool = new ScheduledThreadPoolExecutor(Config.THREAD_P_EFFECTS, new PriorityThreadFactory("EffectsSTPool", Thread.NORM_PRIORITY)); - _generalScheduledThreadPool = new ScheduledThreadPoolExecutor(Config.THREAD_P_GENERAL, new PriorityThreadFactory("GeneralSTPool", Thread.NORM_PRIORITY)); - _eventScheduledThreadPool = new ScheduledThreadPoolExecutor(Config.THREAD_E_EVENTS, new PriorityThreadFactory("EventSTPool", Thread.NORM_PRIORITY)); - _ioPacketsThreadPool = new ThreadPoolExecutor(Config.IO_PACKET_THREAD_CORE_SIZE, Integer.MAX_VALUE, 5L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(), new PriorityThreadFactory("I/O Packet Pool", Thread.NORM_PRIORITY + 1)); - _generalPacketsThreadPool = new ThreadPoolExecutor(Config.GENERAL_PACKET_THREAD_CORE_SIZE, Config.GENERAL_PACKET_THREAD_CORE_SIZE + 2, 15L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(), new PriorityThreadFactory("Normal Packet Pool", Thread.NORM_PRIORITY + 1)); - _generalThreadPool = new ThreadPoolExecutor(Config.GENERAL_THREAD_CORE_SIZE, Config.GENERAL_THREAD_CORE_SIZE + 2, 5L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(), new PriorityThreadFactory("General Pool", Thread.NORM_PRIORITY)); - _aiScheduledThreadPool = new ScheduledThreadPoolExecutor(Config.AI_MAX_THREAD, new PriorityThreadFactory("AISTPool", Thread.NORM_PRIORITY)); - _eventThreadPool = new ThreadPoolExecutor(Config.EVENT_MAX_THREAD, Config.EVENT_MAX_THREAD + 2, 5L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(), new PriorityThreadFactory("Event Pool", Thread.NORM_PRIORITY)); - scheduleGeneralAtFixedRate(new PurgeTask(), 10, 5, TimeUnit.MINUTES); + // Feed instant pool. + poolCount = Config.INSTANT_THREAD_POOL_COUNT; + if (poolCount == -1) + { + poolCount = Runtime.getRuntime().availableProcessors(); + } + + _instantPools = new ThreadPoolExecutor[poolCount]; + for (int i = 0; i < poolCount; i++) + { + _instantPools[i] = new ThreadPoolExecutor(Config.THREADS_PER_INSTANT_THREAD_POOL, Config.THREADS_PER_INSTANT_THREAD_POOL, 0, TimeUnit.SECONDS, new ArrayBlockingQueue(100000)); + } + + // Prestart core threads. + for (ScheduledThreadPoolExecutor threadPool : _scheduledPools) + { + threadPool.prestartAllCoreThreads(); + } + + for (ThreadPoolExecutor threadPool : _instantPools) + { + threadPool.prestartAllCoreThreads(); + } + + // Launch purge task. + scheduleAtFixedRate(() -> + { + purge(); + }, 600000, 600000); + + LOG.info("ThreadPoolManager: Initialized " + getPoolSize(_instantPools) + "/" + getMaximumPoolSize(_instantPools) + " instant thread(s)."); + LOG.info("ThreadPoolManager: Initialized " + getPoolSize(_scheduledPools) + "/" + getMaximumPoolSize(_scheduledPools) + " scheduled thread(s)."); + } + + public static void purge() + { + for (ScheduledThreadPoolExecutor threadPool1 : _scheduledPools) + { + threadPool1.purge(); + } + for (ThreadPoolExecutor threadPool2 : _instantPools) + { + threadPool2.purge(); + } } /** - * Schedules an effect task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in the given time unit - * @param unit the time unit of the delay parameter - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation + * Schedules a one-shot action that becomes enabled after a delay. The pool is chosen based on pools activity. + * @param r : the task to execute. + * @param delay : the time from now to delay execution. + * @return a ScheduledFuture representing pending completion of the task and whose get() method will return null upon completion. */ - public ScheduledFuture scheduleEffect(Runnable task, long delay, TimeUnit unit) + public static ScheduledFuture schedule(Runnable r, long delay) { try { - return _effectsScheduledThreadPool.schedule(new RunnableWrapper(task), delay, unit); + return getPool(_scheduledPools).schedule(new TaskWrapper(r), validate(delay), TimeUnit.MILLISECONDS); } - catch (RejectedExecutionException e) + catch (Exception e) { return null; } } /** - * Schedules an effect task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation + * Schedules a periodic action that becomes enabled after a delay. The pool is chosen based on pools activity. + * @param r : the task to execute. + * @param delay : the time from now to delay execution. + * @param period : the period between successive executions. + * @return a ScheduledFuture representing pending completion of the task and whose get() method will throw an exception upon cancellation. */ - public ScheduledFuture scheduleEffect(Runnable task, long delay) - { - return scheduleEffect(task, delay, TimeUnit.MILLISECONDS); - } - - /** - * Schedules an effect task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in the given time unit - * @param period the period between executions in the given time unit - * @param unit the time unit of the initialDelay and period parameters - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleEffectAtFixedRate(Runnable task, long initialDelay, long period, TimeUnit unit) + public static ScheduledFuture scheduleAtFixedRate(Runnable r, long delay, long period) { try { - return _effectsScheduledThreadPool.scheduleAtFixedRate(new RunnableWrapper(task), initialDelay, period, unit); + return getPool(_scheduledPools).scheduleAtFixedRate(new TaskWrapper(r), validate(delay), validate(period), TimeUnit.MILLISECONDS); } - catch (RejectedExecutionException e) + catch (Exception e) { - return null; /* shutdown, ignore */ + return null; } } /** - * Schedules an effect task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in milliseconds - * @param period the period between executions in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation + * Executes the given task sometime in the future. + * @param r : the task to execute. */ - public ScheduledFuture scheduleEffectAtFixedRate(Runnable task, long initialDelay, long period) - { - return scheduleEffectAtFixedRate(task, initialDelay, period, TimeUnit.MILLISECONDS); - } - - /** - * Schedules a general task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in the given time unit - * @param unit the time unit of the delay parameter - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleGeneral(Runnable task, long delay, TimeUnit unit) + public static void execute(Runnable r) { try { - return _generalScheduledThreadPool.schedule(new RunnableWrapper(task), delay, unit); + getPool(_instantPools).execute(new TaskWrapper(r)); } - catch (RejectedExecutionException e) + catch (Exception e) { - return null; /* shutdown, ignore */ } } - /** - * Schedules a general task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleGeneral(Runnable task, long delay) + public static String[] getStats() { - return scheduleGeneral(task, delay, TimeUnit.MILLISECONDS); + List stats = new ArrayList<>(); + for (int i = 0; i < _scheduledPools.length; i++) + { + final ScheduledThreadPoolExecutor threadPool = _scheduledPools[i]; + stats.add("Scheduled pool #" + i + ":"); + stats.add(" |- ActiveCount: ...... " + threadPool.getActiveCount()); + stats.add(" |- CorePoolSize: ..... " + threadPool.getCorePoolSize()); + stats.add(" |- PoolSize: ......... " + threadPool.getPoolSize()); + stats.add(" |- LargestPoolSize: .. " + threadPool.getLargestPoolSize()); + stats.add(" |- MaximumPoolSize: .. " + threadPool.getMaximumPoolSize()); + stats.add(" |- CompletedTaskCount: " + threadPool.getCompletedTaskCount()); + stats.add(" |- QueuedTaskCount: .. " + threadPool.getQueue().size()); + stats.add(" |- TaskCount: ........ " + threadPool.getTaskCount()); + stats.add(" | -------"); + } + for (int i = 0; i < _instantPools.length; i++) + { + final ThreadPoolExecutor threadPool = _instantPools[i]; + stats.add("Scheduled pool #" + i + ":"); + stats.add(" |- ActiveCount: ...... " + threadPool.getActiveCount()); + stats.add(" |- CorePoolSize: ..... " + threadPool.getCorePoolSize()); + stats.add(" |- PoolSize: ......... " + threadPool.getPoolSize()); + stats.add(" |- LargestPoolSize: .. " + threadPool.getLargestPoolSize()); + stats.add(" |- MaximumPoolSize: .. " + threadPool.getMaximumPoolSize()); + stats.add(" |- CompletedTaskCount: " + threadPool.getCompletedTaskCount()); + stats.add(" |- QueuedTaskCount: .. " + threadPool.getQueue().size()); + stats.add(" |- TaskCount: ........ " + threadPool.getTaskCount()); + stats.add(" | -------"); + } + return stats.toArray(new String[stats.size()]); } /** - * Schedules a general task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in the given time unit - * @param period the period between executions in the given time unit - * @param unit the time unit of the initialDelay and period parameters - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation + * Shutdown thread pooling system correctly. Send different informations. */ - public ScheduledFuture scheduleGeneralAtFixedRate(Runnable task, long initialDelay, long period, TimeUnit unit) + public static void shutdown() { try { - return _generalScheduledThreadPool.scheduleAtFixedRate(new RunnableWrapper(task), initialDelay, period, unit); - } - catch (RejectedExecutionException e) - { - return null; /* shutdown, ignore */ - } - } - - /** - * Schedules a event task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in the given time unit - * @param unit the time unit of the delay parameter - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleEvent(Runnable task, long delay, TimeUnit unit) - { - try - { - return _eventScheduledThreadPool.schedule(new RunnableWrapper(task), delay, unit); - } - catch (RejectedExecutionException e) - { - return null; /* shutdown, ignore */ - } - } - - /** - * Schedules a event task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleEvent(Runnable task, long delay) - { - return scheduleEvent(task, delay, TimeUnit.MILLISECONDS); - } - - /** - * Schedules a event task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in the given time unit - * @param period the period between executions in the given time unit - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleEventAtFixedRate(Runnable task, long initialDelay, long period) - { - return scheduleEventAtFixedRate(task, initialDelay, period, TimeUnit.MILLISECONDS); - } - - /** - * Schedules a event task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in the given time unit - * @param period the period between executions in the given time unit - * @param unit the time unit of the initialDelay and period parameters - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleEventAtFixedRate(Runnable task, long initialDelay, long period, TimeUnit unit) - { - try - { - return _eventScheduledThreadPool.scheduleAtFixedRate(new RunnableWrapper(task), initialDelay, period, unit); - } - catch (RejectedExecutionException e) - { - return null; /* shutdown, ignore */ - } - } - - /** - * Schedules a general task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in milliseconds - * @param period the period between executions in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleGeneralAtFixedRate(Runnable task, long initialDelay, long period) - { - return scheduleGeneralAtFixedRate(task, initialDelay, period, TimeUnit.MILLISECONDS); - } - - /** - * Schedules an AI task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in the given time unit - * @param unit the time unit of the delay parameter - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleAi(Runnable task, long delay, TimeUnit unit) - { - try - { - return _aiScheduledThreadPool.schedule(new RunnableWrapper(task), delay, unit); - } - catch (RejectedExecutionException e) - { - return null; /* shutdown, ignore */ - } - } - - /** - * Schedules an AI task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleAi(Runnable task, long delay) - { - return scheduleAi(task, delay, TimeUnit.MILLISECONDS); - } - - /** - * Schedules a general task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in the given time unit - * @param period the period between executions in the given time unit - * @param unit the time unit of the initialDelay and period parameters - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleAiAtFixedRate(Runnable task, long initialDelay, long period, TimeUnit unit) - { - try - { - return _aiScheduledThreadPool.scheduleAtFixedRate(new RunnableWrapper(task), initialDelay, period, unit); - } - catch (RejectedExecutionException e) - { - return null; /* shutdown, ignore */ - } - } - - /** - * Schedules a general task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in milliseconds - * @param period the period between executions in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleAiAtFixedRate(Runnable task, long initialDelay, long period) - { - return scheduleAiAtFixedRate(task, initialDelay, period, TimeUnit.MILLISECONDS); - } - - /** - * Executes a packet task sometime in future in another thread. - * @param task the task to execute - */ - public void executePacket(Runnable task) - { - try - { - _generalPacketsThreadPool.execute(task); - } - catch (RejectedExecutionException e) - { - /* shutdown, ignore */ - } - } - - /** - * Executes an IO packet task sometime in future in another thread. - * @param task the task to execute - */ - public void executeIOPacket(Runnable task) - { - try - { - _ioPacketsThreadPool.execute(task); - } - catch (RejectedExecutionException e) - { - /* shutdown, ignore */ - } - } - - /** - * Executes a general task sometime in future in another thread. - * @param task the task to execute - */ - public void executeGeneral(Runnable task) - { - try - { - _generalThreadPool.execute(new RunnableWrapper(task)); - } - catch (RejectedExecutionException e) - { - /* shutdown, ignore */ - } - } - - /** - * Executes an AI task sometime in future in another thread. - * @param task the task to execute - */ - public void executeAi(Runnable task) - { - try - { - _aiScheduledThreadPool.execute(new RunnableWrapper(task)); - } - catch (RejectedExecutionException e) - { - /* shutdown, ignore */ - } - } - - /** - * Executes an Event task sometime in future in another thread. - * @param task the task to execute - */ - public void executeEvent(Runnable task) - { - try - { - _eventThreadPool.execute(new RunnableWrapper(task)); - } - catch (RejectedExecutionException e) - { - /* shutdown, ignore */ - } - } - - public StatsSet getStats(String category) - { - final StatsSet StatsSet = new StatsSet(); - - switch (category) - { - case "EFFECTS": - { - StatsSet.set("ActiveThreads", _effectsScheduledThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _effectsScheduledThreadPool.getCorePoolSize()); - StatsSet.set("PoolSize", _effectsScheduledThreadPool.getPoolSize()); - StatsSet.set("MaximumPoolSize", _effectsScheduledThreadPool.getMaximumPoolSize()); - StatsSet.set("CompletedTasks", (int) _effectsScheduledThreadPool.getCompletedTaskCount()); - StatsSet.set("ScheduledTasks", _effectsScheduledThreadPool.getQueue().size()); - break; - } - case "GENERAL": - { - StatsSet.set("ActiveThreads", _generalScheduledThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSizes", _generalScheduledThreadPool.getCorePoolSize()); - StatsSet.set("PoolSizes", _generalScheduledThreadPool.getPoolSize()); - StatsSet.set("MaximumPoolSizes", _generalScheduledThreadPool.getMaximumPoolSize()); - StatsSet.set("CompletedTasks", (int) _generalScheduledThreadPool.getCompletedTaskCount()); - StatsSet.set("ScheduledTasks", _generalScheduledThreadPool.getQueue().size()); - break; - } - case "AI": - { - StatsSet.set("ActiveThreads", _aiScheduledThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _aiScheduledThreadPool.getCorePoolSize()); - StatsSet.set("PoolSize", _aiScheduledThreadPool.getPoolSize()); - StatsSet.set("MaximumPoolSize", _aiScheduledThreadPool.getMaximumPoolSize()); - StatsSet.set("CompletedTasks", (int) _aiScheduledThreadPool.getCompletedTaskCount()); - StatsSet.set("ScheduledTasks", _aiScheduledThreadPool.getQueue().size()); - break; - } - case "EVENT": - { - StatsSet.set("ActiveThreads", _eventScheduledThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _eventScheduledThreadPool.getCorePoolSize()); - StatsSet.set("PoolSize", _eventScheduledThreadPool.getPoolSize()); - StatsSet.set("MaximumPoolSize", _eventScheduledThreadPool.getMaximumPoolSize()); - StatsSet.set("CompletedTasks", (int) _eventScheduledThreadPool.getCompletedTaskCount()); - StatsSet.set("ScheduledTasks", _eventScheduledThreadPool.getQueue().size()); - break; - } - case "PACKETS": - { - StatsSet.set("ActiveThreads", _generalPacketsThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _generalPacketsThreadPool.getCorePoolSize()); - StatsSet.set("MaximumPoolSize", _generalPacketsThreadPool.getMaximumPoolSize()); - StatsSet.set("LargestPoolSize", _generalPacketsThreadPool.getLargestPoolSize()); - StatsSet.set("PoolSize", _generalPacketsThreadPool.getPoolSize()); - StatsSet.set("CompletedTasks", (int) _generalPacketsThreadPool.getCompletedTaskCount()); - StatsSet.set("QueuedTasks", _generalPacketsThreadPool.getQueue().size()); - break; - } - case "IOPACKETS": - { - StatsSet.set("ActiveThreads", _ioPacketsThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _ioPacketsThreadPool.getCorePoolSize()); - StatsSet.set("MaximumPoolSize", _ioPacketsThreadPool.getMaximumPoolSize()); - StatsSet.set("LargestPoolSize", _ioPacketsThreadPool.getLargestPoolSize()); - StatsSet.set("PoolSize", _ioPacketsThreadPool.getPoolSize()); - StatsSet.set("CompletedTasks", (int) _ioPacketsThreadPool.getCompletedTaskCount()); - StatsSet.set("QueuedTasks", _ioPacketsThreadPool.getQueue().size()); - break; - } - case "GENERAL_TASKS": - { - StatsSet.set("ActiveThreads", _generalThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _generalThreadPool.getCorePoolSize()); - StatsSet.set("MaximumPoolSize", _generalThreadPool.getMaximumPoolSize()); - StatsSet.set("LargestPoolSize", _generalThreadPool.getLargestPoolSize()); - StatsSet.set("PoolSize", _generalThreadPool.getPoolSize()); - StatsSet.set("CompletedTasks", (int) _generalThreadPool.getCompletedTaskCount()); - StatsSet.set("QueuedTasks", _generalThreadPool.getQueue().size()); - break; - } - case "EVENT_TASKS": - { - StatsSet.set("ActiveThreads", _eventThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _eventThreadPool.getCorePoolSize()); - StatsSet.set("MaximumPoolSize", _eventThreadPool.getMaximumPoolSize()); - StatsSet.set("LargestPoolSize", _eventThreadPool.getLargestPoolSize()); - StatsSet.set("PoolSize", _eventThreadPool.getPoolSize()); - StatsSet.set("CompletedTasks", (int) _eventThreadPool.getCompletedTaskCount()); - StatsSet.set("QueuedTasks", _eventThreadPool.getQueue().size()); - break; - } - } - return StatsSet; - } - - public String[] getStats() - { - return new String[] - { - "STP:", - " + Effects:", - " |- ActiveThreads: " + _effectsScheduledThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _effectsScheduledThreadPool.getCorePoolSize(), - " |- PoolSize: " + _effectsScheduledThreadPool.getPoolSize(), - " |- MaximumPoolSize: " + _effectsScheduledThreadPool.getMaximumPoolSize(), - " |- CompletedTasks: " + _effectsScheduledThreadPool.getCompletedTaskCount(), - " |- ScheduledTasks: " + _effectsScheduledThreadPool.getQueue().size(), - " | -------", - " + General:", - " |- ActiveThreads: " + _generalScheduledThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _generalScheduledThreadPool.getCorePoolSize(), - " |- PoolSize: " + _generalScheduledThreadPool.getPoolSize(), - " |- MaximumPoolSize: " + _generalScheduledThreadPool.getMaximumPoolSize(), - " |- CompletedTasks: " + _generalScheduledThreadPool.getCompletedTaskCount(), - " |- ScheduledTasks: " + _generalScheduledThreadPool.getQueue().size(), - " | -------", - " + AI:", - " |- ActiveThreads: " + _aiScheduledThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _aiScheduledThreadPool.getCorePoolSize(), - " |- PoolSize: " + _aiScheduledThreadPool.getPoolSize(), - " |- MaximumPoolSize: " + _aiScheduledThreadPool.getMaximumPoolSize(), - " |- CompletedTasks: " + _aiScheduledThreadPool.getCompletedTaskCount(), - " |- ScheduledTasks: " + _aiScheduledThreadPool.getQueue().size(), - " | -------", - " + Event:", - " |- ActiveThreads: " + _eventScheduledThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _eventScheduledThreadPool.getCorePoolSize(), - " |- PoolSize: " + _eventScheduledThreadPool.getPoolSize(), - " |- MaximumPoolSize: " + _eventScheduledThreadPool.getMaximumPoolSize(), - " |- CompletedTasks: " + _eventScheduledThreadPool.getCompletedTaskCount(), - " |- ScheduledTasks: " + _eventScheduledThreadPool.getQueue().size(), - "TP:", - " + Packets:", - " |- ActiveThreads: " + _generalPacketsThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _generalPacketsThreadPool.getCorePoolSize(), - " |- MaximumPoolSize: " + _generalPacketsThreadPool.getMaximumPoolSize(), - " |- LargestPoolSize: " + _generalPacketsThreadPool.getLargestPoolSize(), - " |- PoolSize: " + _generalPacketsThreadPool.getPoolSize(), - " |- CompletedTasks: " + _generalPacketsThreadPool.getCompletedTaskCount(), - " |- QueuedTasks: " + _generalPacketsThreadPool.getQueue().size(), - " | -------", - " + I/O Packets:", - " |- ActiveThreads: " + _ioPacketsThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _ioPacketsThreadPool.getCorePoolSize(), - " |- MaximumPoolSize: " + _ioPacketsThreadPool.getMaximumPoolSize(), - " |- LargestPoolSize: " + _ioPacketsThreadPool.getLargestPoolSize(), - " |- PoolSize: " + _ioPacketsThreadPool.getPoolSize(), - " |- CompletedTasks: " + _ioPacketsThreadPool.getCompletedTaskCount(), - " |- QueuedTasks: " + _ioPacketsThreadPool.getQueue().size(), - " | -------", - " + General Tasks:", - " |- ActiveThreads: " + _generalThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _generalThreadPool.getCorePoolSize(), - " |- MaximumPoolSize: " + _generalThreadPool.getMaximumPoolSize(), - " |- LargestPoolSize: " + _generalThreadPool.getLargestPoolSize(), - " |- PoolSize: " + _generalThreadPool.getPoolSize(), - " |- CompletedTasks: " + _generalThreadPool.getCompletedTaskCount(), - " |- QueuedTasks: " + _generalThreadPool.getQueue().size(), - " | -------", - " + Event Tasks:", - " |- ActiveThreads: " + _eventThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _eventThreadPool.getCorePoolSize(), - " |- MaximumPoolSize: " + _eventThreadPool.getMaximumPoolSize(), - " |- LargestPoolSize: " + _eventThreadPool.getLargestPoolSize(), - " |- PoolSize: " + _eventThreadPool.getPoolSize(), - " |- CompletedTasks: " + _eventThreadPool.getCompletedTaskCount(), - " |- QueuedTasks: " + _eventThreadPool.getQueue().size(), - " | -------" - }; - } - - private static class PriorityThreadFactory implements ThreadFactory - { - private final int _prio; - private final String _name; - private final AtomicInteger _threadNumber = new AtomicInteger(1); - private final ThreadGroup _group; - - public PriorityThreadFactory(String name, int prio) - { - _prio = prio; - _name = name; - _group = new ThreadGroup(_name); - } - - @Override - public Thread newThread(Runnable r) - { - final Thread t = new Thread(_group, r, _name + "-" + _threadNumber.getAndIncrement()); - t.setPriority(_prio); - return t; - } - - public ThreadGroup getGroup() - { - return _group; - } - } - - public void shutdown() - { - _shutdown = true; - try - { - _effectsScheduledThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _generalScheduledThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _generalPacketsThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _ioPacketsThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _generalThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _eventThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _effectsScheduledThreadPool.shutdown(); - _generalScheduledThreadPool.shutdown(); - _generalPacketsThreadPool.shutdown(); - _ioPacketsThreadPool.shutdown(); - _generalThreadPool.shutdown(); - _eventThreadPool.shutdown(); - LOGGER.info("All ThreadPools are now stopped"); + System.out.println("ThreadPoolManager: Shutting down."); - } - catch (InterruptedException e) - { - LOGGER.log(Level.WARNING, "", e); - } - } - - public boolean isShutdown() - { - return _shutdown; - } - - public void purge() - { - _effectsScheduledThreadPool.purge(); - _generalScheduledThreadPool.purge(); - _aiScheduledThreadPool.purge(); - _eventScheduledThreadPool.purge(); - _ioPacketsThreadPool.purge(); - _generalPacketsThreadPool.purge(); - _generalThreadPool.purge(); - _eventThreadPool.purge(); - } - - public String getPacketStats() - { - final StringBuilder sb = new StringBuilder(1000); - final ThreadFactory tf = _generalPacketsThreadPool.getThreadFactory(); - if (tf instanceof PriorityThreadFactory) - { - final PriorityThreadFactory ptf = (PriorityThreadFactory) tf; - final int count = ptf.getGroup().activeCount(); - final Thread[] threads = new Thread[count + 2]; - ptf.getGroup().enumerate(threads); - sb.append("General Packet Thread Pool:" + Config.EOL + "Tasks in the queue: " + _generalPacketsThreadPool.getQueue().size() + Config.EOL + "Showing threads stack trace:" + Config.EOL + "There should be " + count + " Threads" + Config.EOL); - for (Thread t : threads) + for (ScheduledThreadPoolExecutor threadPool : _scheduledPools) { - if (t == null) - { - continue; - } - - sb.append(t.getName()); - sb.append(Config.EOL); - for (StackTraceElement ste : t.getStackTrace()) - { - sb.append(ste); - sb.append(Config.EOL); - } + threadPool.shutdownNow(); } - } - - sb.append("Packet Tp stack traces printed."); - sb.append(Config.EOL); - return sb.toString(); - } - - public String getIOPacketStats() - { - final StringBuilder sb = new StringBuilder(1000); - final ThreadFactory tf = _ioPacketsThreadPool.getThreadFactory(); - - if (tf instanceof PriorityThreadFactory) - { - final PriorityThreadFactory ptf = (PriorityThreadFactory) tf; - final int count = ptf.getGroup().activeCount(); - final Thread[] threads = new Thread[count + 2]; - ptf.getGroup().enumerate(threads); - sb.append("I/O Packet Thread Pool:" + Config.EOL + "Tasks in the queue: " + _ioPacketsThreadPool.getQueue().size() + Config.EOL + "Showing threads stack trace:" + Config.EOL + "There should be " + count + " Threads" + Config.EOL); - for (Thread t : threads) + for (ThreadPoolExecutor threadPool : _instantPools) { - if (t == null) - { - continue; - } - - sb.append(t.getName()); - sb.append(Config.EOL); - for (StackTraceElement ste : t.getStackTrace()) - { - sb.append(ste); - sb.append(Config.EOL); - } + threadPool.shutdownNow(); } } - - sb.append("Packet Tp stack traces printed." + Config.EOL); - - return sb.toString(); - } - - public String getGeneralStats() - { - final StringBuilder sb = new StringBuilder(1000); - final ThreadFactory tf = _generalThreadPool.getThreadFactory(); - - if (tf instanceof PriorityThreadFactory) + catch (Throwable t) { - final PriorityThreadFactory ptf = (PriorityThreadFactory) tf; - final int count = ptf.getGroup().activeCount(); - final Thread[] threads = new Thread[count + 2]; - ptf.getGroup().enumerate(threads); - sb.append("General Thread Pool:" + Config.EOL + "Tasks in the queue: " + _generalThreadPool.getQueue().size() + Config.EOL + "Showing threads stack trace:" + Config.EOL + "There should be " + +count + " Threads" + Config.EOL); - - for (Thread t : threads) - { - if (t == null) - { - continue; - } - - sb.append(t.getName()); - sb.append(Config.EOL); - for (StackTraceElement ste : t.getStackTrace()) - { - sb.append(ste); - sb.append(Config.EOL); - } - } + t.printStackTrace(); } - - sb.append("Packet Tp stack traces printed." + Config.EOL); - - return sb.toString(); } - protected class PurgeTask implements Runnable + /** + * @param : The pool type. + * @param threadPools : The pool array to check. + * @return the less fed pool. + */ + private static T getPool(T[] threadPools) { + return threadPools[_threadPoolRandomizer++ % threadPools.length]; + } + + /** + * @param delay : The delay to validate. + * @return a secured value, from 0 to MAX_DELAY. + */ + private static long validate(long delay) + { + return Math.max(0, Math.min(MAX_DELAY, delay)); + } + + /** + * @param threadPools : The pool array to check. + * @return the overall actual pools size. + */ + private static long getPoolSize(ThreadPoolExecutor[] threadPools) + { + long result = 0; + + for (ThreadPoolExecutor threadPool : threadPools) + { + result += threadPool.getPoolSize(); + } + + return result; + } + + /** + * @param threadPools : The pool array to check. + * @return the overall maximum pools size. + */ + private static long getMaximumPoolSize(ThreadPoolExecutor[] threadPools) + { + long result = 0; + + for (ThreadPoolExecutor threadPool : threadPools) + { + result += threadPool.getMaximumPoolSize(); + } + + return result; + } + + public static final class TaskWrapper implements Runnable + { + private final Runnable _runnable; + + public TaskWrapper(Runnable runnable) + { + _runnable = runnable; + } + @Override public void run() { - _effectsScheduledThreadPool.purge(); - _generalScheduledThreadPool.purge(); - _aiScheduledThreadPool.purge(); - _eventScheduledThreadPool.purge(); + try + { + _runnable.run(); + } + catch (RuntimeException e) + { + LOG.warning("Exception in a Runnable execution:" + e); + } } } - - private static class SingletonHolder - { - protected static final ThreadPoolManager _instance = new ThreadPoolManager(); - } } \ No newline at end of file diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/AbstractAI.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/AbstractAI.java index 6264f0fd61..b0de12e3a7 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/AbstractAI.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/AbstractAI.java @@ -728,7 +728,7 @@ public abstract class AbstractAI implements Ctrl setTarget(target); final int followRange = range == -1 ? Rnd.get(50, 100) : range; - _followTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(() -> + _followTask = ThreadPoolManager.scheduleAtFixedRate(() -> { try { diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/L2AttackableAI.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/L2AttackableAI.java index b2726b7a08..c363c397b5 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/L2AttackableAI.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/L2AttackableAI.java @@ -203,7 +203,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable // If not idle - create an AI task (schedule onEvtThink repeatedly) if (_aiTask == null) { - _aiTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this, 1000, 1000); + _aiTask = ThreadPoolManager.scheduleAtFixedRate(this, 1000, 1000); } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/L2CharacterAI.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/L2CharacterAI.java index f307a1741d..c5cab58d48 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/L2CharacterAI.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/L2CharacterAI.java @@ -308,7 +308,7 @@ public class L2CharacterAI extends AbstractAI if (_actor.isAttackingNow()) { - ThreadPoolManager.getInstance().scheduleGeneral(new CastTask(_actor, skill, target, item, forceUse, dontMove), _actor.getAttackEndTime() - TimeUnit.MILLISECONDS.toNanos(System.currentTimeMillis())); + ThreadPoolManager.schedule(new CastTask(_actor, skill, target, item, forceUse, dontMove), _actor.getAttackEndTime() - TimeUnit.MILLISECONDS.toNanos(System.currentTimeMillis())); } else { diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/L2DoorAI.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/L2DoorAI.java index 5df2a74538..1c536565b1 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/L2DoorAI.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/L2DoorAI.java @@ -89,7 +89,7 @@ public class L2DoorAI extends L2CharacterAI @Override protected void onEvtAttacked(L2Character attacker) { - ThreadPoolManager.getInstance().executeGeneral(new onEventAttackedDoorTask((L2DoorInstance) _actor, attacker)); + ThreadPoolManager.execute(new onEventAttackedDoorTask((L2DoorInstance) _actor, attacker)); } @Override diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/L2FortSiegeGuardAI.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/L2FortSiegeGuardAI.java index 9776e16aa8..79f39cb51d 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/L2FortSiegeGuardAI.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/L2FortSiegeGuardAI.java @@ -217,7 +217,7 @@ public class L2FortSiegeGuardAI extends L2CharacterAI implements Runnable // If not idle - create an AI task (schedule onEvtThink repeatedly) if (_aiTask == null) { - _aiTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this, 1000, 1000); + _aiTask = ThreadPoolManager.scheduleAtFixedRate(this, 1000, 1000); } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/L2SiegeGuardAI.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/L2SiegeGuardAI.java index f6d5a3b6f1..caf5f39544 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/L2SiegeGuardAI.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/L2SiegeGuardAI.java @@ -204,7 +204,7 @@ public class L2SiegeGuardAI extends L2CharacterAI implements Runnable // If not idle - create an AI task (schedule onEvtThink repeatedly) if (_aiTask == null) { - _aiTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this, 1000, 1000); + _aiTask = ThreadPoolManager.scheduleAtFixedRate(this, 1000, 1000); } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/L2SummonAI.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/L2SummonAI.java index 26c09985b0..00c00b8ff9 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/L2SummonAI.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/ai/L2SummonAI.java @@ -342,7 +342,7 @@ public class L2SummonAI extends L2PlayableAI implements Runnable { if (_avoidTask == null) { - _avoidTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this, 100, 100); + _avoidTask = ThreadPoolManager.scheduleAtFixedRate(this, 100, 100); } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/cache/WarehouseCacheManager.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/cache/WarehouseCacheManager.java index ae00f2fe33..258e120fa2 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/cache/WarehouseCacheManager.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/cache/WarehouseCacheManager.java @@ -33,7 +33,7 @@ public class WarehouseCacheManager protected WarehouseCacheManager() { - ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new CacheScheduler(), 120000, 60000); + ThreadPoolManager.scheduleAtFixedRate(new CacheScheduler(), 120000, 60000); } public void addCacheTask(L2PcInstance pc) diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/data/sql/impl/ClanTable.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/data/sql/impl/ClanTable.java index 4d4718f475..93625c6b3c 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/data/sql/impl/ClanTable.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/data/sql/impl/ClanTable.java @@ -331,7 +331,7 @@ public class ClanTable public void scheduleRemoveClan(int clanId) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { if (getClan(clanId) == null) { diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/datatables/BotReportTable.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/datatables/BotReportTable.java index aa6c03a3ac..a145b65dba 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/datatables/BotReportTable.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/datatables/BotReportTable.java @@ -421,11 +421,11 @@ public final class BotReportTable c.set(Calendar.DAY_OF_YEAR, c.get(Calendar.DAY_OF_YEAR) + 1); } - ThreadPoolManager.getInstance().scheduleGeneral(new ResetPointTask(), c.getTimeInMillis() - System.currentTimeMillis()); + ThreadPoolManager.schedule(new ResetPointTask(), c.getTimeInMillis() - System.currentTimeMillis()); } catch (Exception e) { - ThreadPoolManager.getInstance().scheduleGeneral(new ResetPointTask(), 24 * 3600 * 1000); + ThreadPoolManager.schedule(new ResetPointTask(), 24 * 3600 * 1000); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Could not properly schedule bot report points reset task. Scheduled in 24 hours.", e); } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/datatables/ItemTable.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/datatables/ItemTable.java index f506bb6e4f..29c7c41a51 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/datatables/ItemTable.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/datatables/ItemTable.java @@ -221,14 +221,14 @@ public class ItemTable if ((raid.getFirstCommandChannelAttacked() != null) && !Config.AUTO_LOOT_RAIDS) { item.setOwnerId(raid.getFirstCommandChannelAttacked().getLeaderObjectId()); - itemLootShedule = ThreadPoolManager.getInstance().scheduleGeneral(new ResetOwner(item), Config.LOOT_RAIDS_PRIVILEGE_INTERVAL); + itemLootShedule = ThreadPoolManager.schedule(new ResetOwner(item), Config.LOOT_RAIDS_PRIVILEGE_INTERVAL); item.setItemLootShedule(itemLootShedule); } } else if (!Config.AUTO_LOOT || ((reference instanceof L2EventMonsterInstance) && ((L2EventMonsterInstance) reference).eventDropOnGround())) { item.setOwnerId(actor.getObjectId()); - itemLootShedule = ThreadPoolManager.getInstance().scheduleGeneral(new ResetOwner(item), 15000); + itemLootShedule = ThreadPoolManager.schedule(new ResetOwner(item), 15000); item.setItemLootShedule(itemLootShedule); } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/idfactory/BitSetIDFactory.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/idfactory/BitSetIDFactory.java index a89517e6d8..b81189c6db 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/idfactory/BitSetIDFactory.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/idfactory/BitSetIDFactory.java @@ -53,7 +53,7 @@ public class BitSetIDFactory extends IdFactory synchronized (BitSetIDFactory.class) { - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new BitSetCapacityCheck(), 30000, 30000); + ThreadPoolManager.scheduleAtFixedRate(new BitSetCapacityCheck(), 30000, 30000); initialize(); } LOGGER.info(getClass().getSimpleName() + ": " + _freeIds.size() + " id's available."); diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/CastleManorManager.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/CastleManorManager.java index 4bf663ecee..2e64596385 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/CastleManorManager.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/CastleManorManager.java @@ -29,7 +29,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; import java.util.stream.Collectors; @@ -107,7 +106,7 @@ public final class CastleManorManager implements IGameXmlReader, IStorable // Schedule autosave if (!Config.ALT_MANOR_SAVE_ALL_ACTIONS) { - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this::storeMe, Config.ALT_MANOR_SAVE_PERIOD_RATE, Config.ALT_MANOR_SAVE_PERIOD_RATE, TimeUnit.HOURS); + ThreadPoolManager.scheduleAtFixedRate(this::storeMe, Config.ALT_MANOR_SAVE_PERIOD_RATE * 60 * 60 * 1000, Config.ALT_MANOR_SAVE_PERIOD_RATE * 60 * 60 * 1000); } // Send debug message @@ -278,7 +277,7 @@ public final class CastleManorManager implements IGameXmlReader, IStorable break; } // Schedule mode change - ThreadPoolManager.getInstance().scheduleGeneral(this::changeMode, (_nextModeChange.getTimeInMillis() - System.currentTimeMillis())); + ThreadPoolManager.schedule(this::changeMode, (_nextModeChange.getTimeInMillis() - System.currentTimeMillis())); } public final void changeMode() diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/ClanEntryManager.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/ClanEntryManager.java index 9241243a07..62d750ea6e 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/ClanEntryManager.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/ClanEntryManager.java @@ -390,7 +390,7 @@ public class ClanEntryManager private static void lockPlayer(int playerId) { - _playerLocked.put(playerId, ThreadPoolManager.getInstance().scheduleGeneral(() -> + _playerLocked.put(playerId, ThreadPoolManager.schedule(() -> { _playerLocked.remove(playerId); }, LOCK_TIME)); @@ -398,7 +398,7 @@ public class ClanEntryManager private static void lockClan(int clanId) { - _clanLocked.put(clanId, ThreadPoolManager.getInstance().scheduleGeneral(() -> + _clanLocked.put(clanId, ThreadPoolManager.schedule(() -> { _clanLocked.remove(clanId); }, LOCK_TIME)); diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/CommissionManager.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/CommissionManager.java index 03aed150d6..d15bee76d5 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/CommissionManager.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/CommissionManager.java @@ -114,7 +114,7 @@ public final class CommissionManager } else { - commissionItem.setSaleEndTask(ThreadPoolManager.getInstance().scheduleGeneral(() -> expireSale(commissionItem), Duration.between(Instant.now(), commissionItem.getEndTime()).toMillis())); + commissionItem.setSaleEndTask(ThreadPoolManager.schedule(() -> expireSale(commissionItem), Duration.between(Instant.now(), commissionItem.getEndTime()).toMillis())); } } } @@ -259,7 +259,7 @@ public final class CommissionManager if (rs.next()) { final CommissionItem commissionItem = new CommissionItem(rs.getLong(1), itemInstance, pricePerUnit, startTime, durationInDays); - final ScheduledFuture saleEndTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> expireSale(commissionItem), Duration.between(Instant.now(), commissionItem.getEndTime()).toMillis()); + final ScheduledFuture saleEndTask = ThreadPoolManager.schedule(() -> expireSale(commissionItem), Duration.between(Instant.now(), commissionItem.getEndTime()).toMillis()); commissionItem.setSaleEndTask(saleEndTask); _commissionItems.put(commissionItem.getCommissionId(), commissionItem); player.getLastCommissionInfos().put(itemInstance.getId(), new ExResponseCommissionInfo(itemInstance.getId(), pricePerUnit, itemCount, (byte) ((durationInDays - 1) / 2))); diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/DBSpawnManager.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/DBSpawnManager.java index ed96d6cd39..7c337c11d2 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/DBSpawnManager.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/DBSpawnManager.java @@ -226,7 +226,7 @@ public class DBSpawnManager { LOGGER.info(getClass().getSimpleName() + ": Updated " + npc.getName() + " respawn time to " + Util.formatDate(new Date(respawnTime), "dd.MM.yyyy HH:mm")); - _schedules.put(npc.getId(), ThreadPoolManager.getInstance().scheduleGeneral(new SpawnSchedule(npc.getId()), respawnDelay)); + _schedules.put(npc.getId(), ThreadPoolManager.schedule(new SpawnSchedule(npc.getId()), respawnDelay)); updateDb(); } } @@ -287,7 +287,7 @@ public class DBSpawnManager else { final long spawnTime = respawnTime - System.currentTimeMillis(); - _schedules.put(npcId, ThreadPoolManager.getInstance().scheduleGeneral(new SpawnSchedule(npcId), spawnTime)); + _schedules.put(npcId, ThreadPoolManager.schedule(new SpawnSchedule(npcId), spawnTime)); } _spawns.put(npcId, spawn); diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/GraciaSeedsManager.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/GraciaSeedsManager.java index a3e653654f..4f5183877e 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/GraciaSeedsManager.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/GraciaSeedsManager.java @@ -101,7 +101,7 @@ public final class GraciaSeedsManager } else { - ThreadPoolManager.getInstance().scheduleEffect(new UpdateSoDStateTask(), Config.SOD_STAGE_2_LENGTH - timePast); + ThreadPoolManager.schedule(new UpdateSoDStateTask(), Config.SOD_STAGE_2_LENGTH - timePast); } break; case 3: diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/GrandBossManager.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/GrandBossManager.java index 532b343a8a..e7c0bad9c5 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/GrandBossManager.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/GrandBossManager.java @@ -98,7 +98,7 @@ public final class GrandBossManager implements IStorable { _log.log(Level.WARNING, getClass().getSimpleName() + ": Error while initializing GrandBossManager: " + e.getMessage(), e); } - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new GrandBossManagerStoreTask(), 5 * 60 * 1000, 5 * 60 * 1000); + ThreadPoolManager.scheduleAtFixedRate(new GrandBossManagerStoreTask(), 5 * 60 * 1000, 5 * 60 * 1000); } public int getBossStatus(int bossId) diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java index 3a0a2105d7..a77eb2d2d7 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java @@ -86,7 +86,7 @@ public final class HandysBlockCheckerManager { holder.checkAndShuffle(); } - ThreadPoolManager.getInstance().executeGeneral(holder.getEvent().new StartEvent()); + ThreadPoolManager.execute(holder.getEvent().new StartEvent()); } else { @@ -364,7 +364,7 @@ public final class HandysBlockCheckerManager private void schedulePenaltyRemoval(int objId) { - ThreadPoolManager.getInstance().scheduleGeneral(new PenaltyRemoveTask(objId), 10000); + ThreadPoolManager.schedule(new PenaltyRemoveTask(objId), 10000); } /** diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/ItemsOnGroundManager.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/ItemsOnGroundManager.java index 78e9cdb6a7..6871fb1dfe 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/ItemsOnGroundManager.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/ItemsOnGroundManager.java @@ -47,7 +47,7 @@ public final class ItemsOnGroundManager implements Runnable { if (Config.SAVE_DROPPED_ITEM_INTERVAL > 0) { - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this, Config.SAVE_DROPPED_ITEM_INTERVAL, Config.SAVE_DROPPED_ITEM_INTERVAL); + ThreadPoolManager.scheduleAtFixedRate(this, Config.SAVE_DROPPED_ITEM_INTERVAL, Config.SAVE_DROPPED_ITEM_INTERVAL); } load(); } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/MailManager.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/MailManager.java index b5e05d16eb..9a562ecf61 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/MailManager.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/MailManager.java @@ -74,11 +74,11 @@ public final class MailManager if (expiration < System.currentTimeMillis()) { - ThreadPoolManager.getInstance().scheduleGeneral(new MessageDeletionTask(msgId), 10000); + ThreadPoolManager.schedule(new MessageDeletionTask(msgId), 10000); } else { - ThreadPoolManager.getInstance().scheduleGeneral(new MessageDeletionTask(msgId), expiration - System.currentTimeMillis()); + ThreadPoolManager.schedule(new MessageDeletionTask(msgId), expiration - System.currentTimeMillis()); } } } @@ -209,7 +209,7 @@ public final class MailManager receiver.sendPacket(new ExUnReadMailCount(receiver)); } - ThreadPoolManager.getInstance().scheduleGeneral(new MessageDeletionTask(msg.getId()), msg.getExpiration() - System.currentTimeMillis()); + ThreadPoolManager.schedule(new MessageDeletionTask(msg.getId()), msg.getExpiration() - System.currentTimeMillis()); } public final void markAsReadInDb(int msgId) diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/PremiumManager.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/PremiumManager.java index 9075f34c27..3e52cd93bb 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/PremiumManager.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/PremiumManager.java @@ -111,7 +111,7 @@ public class PremiumManager */ private void startExpireTask(L2PcInstance player, long delay) { - ScheduledFuture task = ThreadPoolManager.getInstance().scheduleEvent(new PremiumExpireTask(player), delay); + ScheduledFuture task = ThreadPoolManager.schedule(new PremiumExpireTask(player), delay); expiretasks.put(player.getAccountName(), task); } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/ServerRestartManager.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/ServerRestartManager.java index 1d56bd7f20..478e1f78f5 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/ServerRestartManager.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/ServerRestartManager.java @@ -71,7 +71,7 @@ public class ServerRestartManager if (lastRestart != null) { nextRestartTime = new SimpleDateFormat("HH:mm").format(lastRestart.getTime()); - ThreadPoolManager.getInstance().scheduleGeneral(new ServerRestartTask(), lastDelay - (Config.SERVER_RESTART_SCHEDULE_COUNTDOWN * 1000)); + ThreadPoolManager.schedule(new ServerRestartTask(), lastDelay - (Config.SERVER_RESTART_SCHEDULE_COUNTDOWN * 1000)); _log.info("Scheduled server restart at " + lastRestart.getTime() + "."); } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/WalkingManager.java index 9d568d65c4..3da5ea144c 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -301,14 +301,14 @@ public final class WalkingManager implements IGameXmlReader npc.sendDebugMessage("Starting to move at route '" + routeName + "'"); npc.setIsRunning(node.runToLocation()); npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, node); - walk.setWalkCheckTask(ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new StartMovingTask(npc, routeName), 60000, 60000)); // start walk check task, for resuming walk after fight + walk.setWalkCheckTask(ThreadPoolManager.scheduleAtFixedRate(new StartMovingTask(npc, routeName), 60000, 60000)); // start walk check task, for resuming walk after fight _activeRoutes.put(npc.getObjectId(), walk); // register route } else { npc.sendDebugMessage("Failed to start moving along route '" + routeName + "', scheduled"); - ThreadPoolManager.getInstance().scheduleGeneral(new StartMovingTask(npc, routeName), 60000); + ThreadPoolManager.schedule(new StartMovingTask(npc, routeName), 60000); } } else @@ -455,7 +455,7 @@ public final class WalkingManager implements IGameXmlReader walk.setLastAction(System.currentTimeMillis()); } - ThreadPoolManager.getInstance().scheduleGeneral(new ArrivedTask(npc, walk), 100 + (node.getDelay() * 1000L)); + ThreadPoolManager.schedule(new ArrivedTask(npc, walk), 100 + (node.getDelay() * 1000L)); } } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/ClanWar.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/ClanWar.java index ef54a4f680..61a97fa208 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/ClanWar.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/ClanWar.java @@ -56,7 +56,7 @@ public final class ClanWar _startTime = System.currentTimeMillis(); _state = ClanWarState.BLOOD_DECLARATION; - _cancelTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _cancelTask = ThreadPoolManager.schedule(() -> { clanWarTimeout(); }, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); @@ -88,7 +88,7 @@ public final class ClanWar if ((_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) > System.currentTimeMillis()) { - _cancelTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _cancelTask = ThreadPoolManager.schedule(() -> { clanWarTimeout(); }, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); @@ -104,7 +104,7 @@ public final class ClanWar } else { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { ClanTable.getInstance().deleteclanswars(_attackerClanId, _attackedClanId); }, endTimePeriod); @@ -200,7 +200,7 @@ public final class ClanWar _winnerClanId = winnerClan.getId(); _endTime = System.currentTimeMillis(); - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { ClanTable.getInstance().deleteclanswars(cancelor.getId(), winnerClan.getId()); }, (_endTime + TIME_TO_DELETION_AFTER_DEFEAT) - System.currentTimeMillis()); @@ -225,7 +225,7 @@ public final class ClanWar _state = ClanWarState.TIE; _endTime = System.currentTimeMillis(); - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { ClanTable.getInstance().deleteclanswars(attackerClan.getId(), attackedClan.getId()); }, (_endTime + TIME_TO_DELETION_AFTER_CANCELLATION) - System.currentTimeMillis()); diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/CreatureContainer.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/CreatureContainer.java index f64dac8385..da2d7bcc94 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/CreatureContainer.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/CreatureContainer.java @@ -63,7 +63,7 @@ public class CreatureContainer { if ((_task == null) || _task.isDone()) { - _task = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this::update, 1000L, 1000L); + _task = ThreadPoolManager.scheduleAtFixedRate(this::update, 1000L, 1000L); } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/CursedWeapon.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/CursedWeapon.java index d6361de2d2..0f821abc37 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/CursedWeapon.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/CursedWeapon.java @@ -351,7 +351,7 @@ public class CursedWeapon implements INamable { _player.stopTransformation(true); - ThreadPoolManager.getInstance().scheduleGeneral(() -> _player.transform(transformationId, true), 500); + ThreadPoolManager.schedule(() -> _player.transform(transformationId, true), 500); } else { @@ -375,7 +375,7 @@ public class CursedWeapon implements INamable } else { - _removeTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new RemoveTask(), _durationLost * 12000L, _durationLost * 12000L); + _removeTask = ThreadPoolManager.scheduleAtFixedRate(new RemoveTask(), _durationLost * 12000L, _durationLost * 12000L); } } @@ -389,7 +389,7 @@ public class CursedWeapon implements INamable // Start the Life Task _endTime = System.currentTimeMillis() + (_duration * 60000L); - _removeTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new RemoveTask(), _durationLost * 12000L, _durationLost * 12000L); + _removeTask = ThreadPoolManager.scheduleAtFixedRate(new RemoveTask(), _durationLost * 12000L, _durationLost * 12000L); return true; } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/DropProtection.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/DropProtection.java index 9147db2c59..1a62714f0e 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/DropProtection.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/DropProtection.java @@ -103,6 +103,6 @@ public class DropProtection implements Runnable throw new NullPointerException("Trying to protect dropped item to null owner"); } - _task = ThreadPoolManager.getInstance().scheduleGeneral(this, PROTECTED_MILLIS_TIME); + _task = ThreadPoolManager.schedule(this, PROTECTED_MILLIS_TIME); } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/Fishing.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/Fishing.java index 9985caedd1..1cd211f36a 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/Fishing.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/Fishing.java @@ -220,10 +220,10 @@ public class Fishing _player.rechargeShots(false, false, true); } - _reelInTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _reelInTask = ThreadPoolManager.schedule(() -> { _player.getFishing().reelInWithReward(); - _startFishingTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> _player.getFishing().castLine(), Rnd.get(baitData.getWaitMin(), baitData.getWaitMax())); + _startFishingTask = ThreadPoolManager.schedule(() -> _player.getFishing().castLine(), Rnd.get(baitData.getWaitMin(), baitData.getWaitMax())); }, Rnd.get(baitData.getTimeMin(), baitData.getTimeMax())); _player.stopMove(null); _player.broadcastPacket(new ExFishingStart(_player, -1, baitData.getLevel(), _baitLocation)); diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/L2Clan.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/L2Clan.java index 953a8ccc63..e7f6838bc6 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/L2Clan.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/L2Clan.java @@ -3131,7 +3131,7 @@ public class L2Clan implements IIdentifiable, INamable _vars = new ClanVariables(getId()); if (Config.CLAN_VARIABLES_STORE_INTERVAL > 0) { - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this::storeVariables, Config.CLAN_VARIABLES_STORE_INTERVAL, Config.CLAN_VARIABLES_STORE_INTERVAL); + ThreadPoolManager.scheduleAtFixedRate(this::storeVariables, Config.CLAN_VARIABLES_STORE_INTERVAL, Config.CLAN_VARIABLES_STORE_INTERVAL); } } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/L2Party.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/L2Party.java index 834811cea4..ca47799cce 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/L2Party.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/L2Party.java @@ -379,7 +379,7 @@ public class L2Party extends AbstractPlayerGroup if (_positionBroadcastTask == null) { - _positionBroadcastTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(() -> + _positionBroadcastTask = ThreadPoolManager.scheduleAtFixedRate(() -> { if (_positionPacket == null) { @@ -1084,7 +1084,7 @@ public class L2Party extends AbstractPlayerGroup } _changeRequestDistributionType = partyDistributionType; _changeDistributionTypeAnswers = new HashSet<>(); - _changeDistributionTypeRequestTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> finishLootRequest(false), PARTY_DISTRIBUTION_TYPE_REQUEST_TIMEOUT.toMillis()); + _changeDistributionTypeRequestTask = ThreadPoolManager.schedule(() -> finishLootRequest(false), PARTY_DISTRIBUTION_TYPE_REQUEST_TIMEOUT.toMillis()); broadcastToPartyMembers(getLeader(), new ExAskModifyPartyLooting(getLeader().getName(), partyDistributionType)); diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/L2Request.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/L2Request.java index c39f47f86e..a65b9b6a50 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/L2Request.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/L2Request.java @@ -123,7 +123,7 @@ public class L2Request { _isRequestor = isRequestor; _isAnswerer = !isRequestor; - ThreadPoolManager.getInstance().scheduleGeneral(() -> clear(), REQUEST_TIMEOUT * 1000); + ThreadPoolManager.schedule(() -> clear(), REQUEST_TIMEOUT * 1000); } /** diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/L2Spawn.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/L2Spawn.java index c62f2adbbe..3ddb0761ac 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/L2Spawn.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/L2Spawn.java @@ -400,7 +400,7 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable // Create a new SpawnTask to launch after the respawn Delay // ClientScheduler.getInstance().scheduleLow(new SpawnTask(npcId), _respawnDelay); - ThreadPoolManager.getInstance().scheduleGeneral(new SpawnTask(oldNpc), hasRespawnRandom() ? Rnd.get(_respawnMinDelay, _respawnMaxDelay) : _respawnMinDelay); + ThreadPoolManager.schedule(new SpawnTask(oldNpc), hasRespawnRandom() ? Rnd.get(_respawnMinDelay, _respawnMaxDelay) : _respawnMinDelay); } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/L2WorldRegion.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/L2WorldRegion.java index f7803399a2..450bb4bda4 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/L2WorldRegion.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/L2WorldRegion.java @@ -215,7 +215,7 @@ public final class L2WorldRegion } // then, set a timer to activate the neighbors - _neighborsTask = ThreadPoolManager.getInstance().scheduleGeneral(new NeighborsTask(true), 1000 * Config.GRID_NEIGHBOR_TURNON_TIME); + _neighborsTask = ThreadPoolManager.schedule(new NeighborsTask(true), 1000 * Config.GRID_NEIGHBOR_TURNON_TIME); } } @@ -235,7 +235,7 @@ public final class L2WorldRegion // start a timer to "suggest" a deactivate to self and neighbors. // suggest means: first check if a neighbor has L2PcInstances in it. If not, deactivate. - _neighborsTask = ThreadPoolManager.getInstance().scheduleGeneral(new NeighborsTask(false), 1000 * Config.GRID_NEIGHBOR_TURNOFF_TIME); + _neighborsTask = ThreadPoolManager.schedule(new NeighborsTask(false), 1000 * Config.GRID_NEIGHBOR_TURNOFF_TIME); } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/MpRewardTask.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/MpRewardTask.java index 32d3f1de5e..cf4458c3a4 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/MpRewardTask.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/MpRewardTask.java @@ -41,7 +41,7 @@ public class MpRewardTask _creature = creature; _count = new AtomicInteger(template.getMpRewardTicks()); _value = calculateBaseValue(npc, creature); - _task = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(this::run, Config.EFFECT_TICK_RATIO, Config.EFFECT_TICK_RATIO); + _task = ThreadPoolManager.scheduleAtFixedRate(this::run, Config.EFFECT_TICK_RATIO, Config.EFFECT_TICK_RATIO); } /** diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/L2Attackable.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/L2Attackable.java index db182482d9..12aee02933 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/L2Attackable.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/L2Attackable.java @@ -232,7 +232,7 @@ public class L2Attackable extends L2Npc { _commandChannelTimer = new CommandChannelTimer(this); _commandChannelLastAttack = System.currentTimeMillis(); - ThreadPoolManager.getInstance().scheduleGeneral(_commandChannelTimer, 10000); // check for last attack + ThreadPoolManager.schedule(_commandChannelTimer, 10000); // check for last attack _firstCommandChannelAttacked.broadcastPacket(new CreatureSay(0, ChatType.PARTYROOM_ALL, "", "You have looting rights!")); // TODO: retail msg } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/L2Character.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/L2Character.java index d1c3434468..9fe4844c6c 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/L2Character.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/L2Character.java @@ -1100,7 +1100,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe if (getCurrentMp() < mpConsume) { // If L2PcInstance doesn't have enough MP, stop the attack - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), 1000); + ThreadPoolManager.schedule(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), 1000); sendPacket(SystemMessageId.NOT_ENOUGH_MP); sendPacket(ActionFailed.STATIC_PACKET); return; @@ -1118,7 +1118,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe else { // Cancel the action because the bow can't be re-use at this moment - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), 1000); + ThreadPoolManager.schedule(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), 1000); sendPacket(ActionFailed.STATIC_PACKET); return; } @@ -1222,7 +1222,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe } // Notify AI with EVT_READY_TO_ACT - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), timeAtk); + ThreadPoolManager.schedule(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), timeAtk); } } @@ -1301,7 +1301,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe } // Create a new hit task with Medium priority - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk); + ThreadPoolManager.schedule(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk); // Calculate and set the disable delay of the bow in function of the Attack Speed _disableRangedAttackEndTime = ((sAtk + reuse) / GameTimeController.MILLIS_IN_TICK) + GameTimeController.getInstance().getGameTicks(); @@ -1371,10 +1371,10 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe } // Create a new hit task with Medium priority for hit 1 - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk / 2); + ThreadPoolManager.schedule(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk / 2); // Create a new hit task with Medium priority for hit 2 with a higher delay - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, target, damage2, crit2, miss2, attack.hasSoulshot(), shld2), sAtk); + ThreadPoolManager.schedule(new HitTask(this, target, damage2, crit2, miss2, attack.hasSoulshot(), shld2), sAtk); // Add those hits to the Server-Client packet Attack attack.addHit(target, damage1, miss1, crit1, shld1); @@ -1401,7 +1401,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe damage /= 2; } - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, surroundTarget, damage, crit, miss, attack.hasSoulshot(), shld), sAtk / 2); + ThreadPoolManager.schedule(new HitTask(this, surroundTarget, damage, crit, miss, attack.hasSoulshot(), shld), sAtk / 2); attack.addHit(surroundTarget, damage, miss, crit, shld); miss1 |= miss; } @@ -1421,7 +1421,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe damage /= 2; } - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, surroundTarget, damage, crit, miss, attack.hasSoulshot(), shld), sAtk); + ThreadPoolManager.schedule(new HitTask(this, surroundTarget, damage, crit, miss, attack.hasSoulshot(), shld), sAtk); attack.addHit(surroundTarget, damage, miss, crit, shld); miss2 |= miss; } @@ -1471,7 +1471,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe } // Create a new hit task with Medium priority - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk); + ThreadPoolManager.schedule(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk); // Add this hit to the Server-Client packet Attack attack.addHit(target, damage1, miss1, crit1, shld1); @@ -1495,7 +1495,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe damage = (int) Formulas.calcAutoAttackDamage(this, surroundTarget, 0, shld, crit, attack.hasSoulshot()); } - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, surroundTarget, damage, crit, miss, attack.hasSoulshot(), shld), sAtk); + ThreadPoolManager.schedule(new HitTask(this, surroundTarget, damage, crit, miss, attack.hasSoulshot(), shld), sAtk); attack.addHit(surroundTarget, damage, miss, crit, shld); miss1 |= miss; } @@ -3332,7 +3332,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe if (distFraction > 1) { - ThreadPoolManager.getInstance().executeAi(() -> getAI().notifyEvent(CtrlEvent.EVT_ARRIVED)); + ThreadPoolManager.execute(() -> getAI().notifyEvent(CtrlEvent.EVT_ARRIVED)); return true; } @@ -3773,7 +3773,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe // Create a task to notify the AI that L2Character arrives at a check point of the movement if ((ticksToMove * GameTimeController.MILLIS_IN_TICK) > 3000) { - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_ARRIVED_REVALIDATE), 2000); + ThreadPoolManager.schedule(new NotifyAITask(this, CtrlEvent.EVT_ARRIVED_REVALIDATE), 2000); } // the CtrlEvent.EVT_ARRIVED will be sent when the character will actually arrive @@ -3854,7 +3854,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe // Create a task to notify the AI that L2Character arrives at a check point of the movement if ((ticksToMove * GameTimeController.MILLIS_IN_TICK) > 3000) { - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_ARRIVED_REVALIDATE), 2000); + ThreadPoolManager.schedule(new NotifyAITask(this, CtrlEvent.EVT_ARRIVED_REVALIDATE), 2000); } // the CtrlEvent.EVT_ARRIVED will be sent when the character will actually arrive diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/L2Npc.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/L2Npc.java index f35c9ed391..018b30b595 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/L2Npc.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/L2Npc.java @@ -1216,7 +1216,7 @@ public class L2Npc extends L2Character public void scheduleDespawn(long delay) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { if (!isDecayed()) { diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/L2Vehicle.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/L2Vehicle.java index 6e1c53a7f2..f9904262c1 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/L2Vehicle.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/L2Vehicle.java @@ -87,7 +87,7 @@ public abstract class L2Vehicle extends L2Character { if (_engine != null) { - ThreadPoolManager.getInstance().scheduleGeneral(_engine, delay); + ThreadPoolManager.schedule(_engine, delay); } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2ControllableAirShipInstance.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2ControllableAirShipInstance.java index 642b3eba43..3d61e79b4e 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2ControllableAirShipInstance.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2ControllableAirShipInstance.java @@ -253,8 +253,8 @@ public class L2ControllableAirShipInstance extends L2AirShipInstance public void onSpawn() { super.onSpawn(); - _checkTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new CheckTask(), 60000, 10000); - _consumeFuelTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new ConsumeFuelTask(), 60000, 60000); + _checkTask = ThreadPoolManager.scheduleAtFixedRate(new CheckTask(), 60000, 10000); + _consumeFuelTask = ThreadPoolManager.scheduleAtFixedRate(new ConsumeFuelTask(), 60000, 60000); } @Override @@ -326,7 +326,7 @@ public class L2ControllableAirShipInstance extends L2AirShipInstance if (isSpawned() && isEmpty() && !isInDock()) { // deleteMe() can't be called from CheckTask because task should not cancel itself - ThreadPoolManager.getInstance().executeGeneral(new DecayTask()); + ThreadPoolManager.execute(new DecayTask()); } } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2DecoyInstance.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2DecoyInstance.java index 3e20bde3da..8f14bf5519 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2DecoyInstance.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2DecoyInstance.java @@ -53,8 +53,8 @@ public class L2DecoyInstance extends L2Character _totalLifeTime = totalLifeTime; _timeRemaining = _totalLifeTime; final int skilllevel = getTemplate().getDisplayId() - 13070; - _DecoyLifeTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new DecoyLifetime(getOwner(), this), 1000, 1000); - _HateSpam = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new HateSpam(this, SkillData.getInstance().getSkill(5272, skilllevel)), 2000, 5000); + _DecoyLifeTask = ThreadPoolManager.scheduleAtFixedRate(new DecoyLifetime(getOwner(), this), 1000, 1000); + _HateSpam = ThreadPoolManager.scheduleAtFixedRate(new HateSpam(this, SkillData.getInstance().getSkill(5272, skilllevel)), 2000, 5000); } @Override diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2DoorInstance.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2DoorInstance.java index 76153869d2..7dfa85a48b 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2DoorInstance.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2DoorInstance.java @@ -107,7 +107,7 @@ public final class L2DoorInstance extends L2Character { delay += Rnd.get(getTemplate().getRandomTime()); } - ThreadPoolManager.getInstance().scheduleGeneral(new TimerOpen(), delay * 1000); + ThreadPoolManager.schedule(new TimerOpen(), delay * 1000); } @Override @@ -646,7 +646,7 @@ public final class L2DoorInstance extends L2Character _autoCloseTask = null; oldTask.cancel(false); } - _autoCloseTask = ThreadPoolManager.getInstance().scheduleGeneral(new AutoClose(), getTemplate().getCloseTime() * 1000); + _autoCloseTask = ThreadPoolManager.schedule(new AutoClose(), getTemplate().getCloseTime() * 1000); } class AutoClose implements Runnable @@ -681,7 +681,7 @@ public final class L2DoorInstance extends L2Character { delay += Rnd.get(getTemplate().getRandomTime()); } - ThreadPoolManager.getInstance().scheduleGeneral(this, delay * 1000); + ThreadPoolManager.schedule(this, delay * 1000); } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2FortCommanderInstance.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2FortCommanderInstance.java index cdbc48a84e..56c68106bc 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2FortCommanderInstance.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2FortCommanderInstance.java @@ -145,7 +145,7 @@ public class L2FortCommanderInstance extends L2DefenderInstance { broadcastSay(ChatType.NPC_SHOUT, npcString, npcString.getParamCount() == 1 ? attacker.getName() : null); setCanTalk(false); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleTalkTask(), 10000); + ThreadPoolManager.schedule(new ScheduleTalkTask(), 10000); } } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2PcInstance.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2PcInstance.java index cada75c56c..bfd631cc8e 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2PcInstance.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2PcInstance.java @@ -819,7 +819,7 @@ public final class L2PcInstance extends L2Playable if (_PvPRegTask == null) { - _PvPRegTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new PvPFlagTask(this), 1000, 1000); + _PvPRegTask = ThreadPoolManager.scheduleAtFixedRate(new PvPFlagTask(this), 1000, 1000); } } @@ -2823,7 +2823,7 @@ public final class L2PcInstance extends L2Playable getAI().setIntention(CtrlIntention.AI_INTENTION_REST); broadcastPacket(new ChangeWaitType(this, ChangeWaitType.WT_SITTING)); // Schedule a sit down task to wait for the animation to finish - ThreadPoolManager.getInstance().scheduleGeneral(new SitDownTask(this), 2500); + ThreadPoolManager.schedule(new SitDownTask(this), 2500); setBlockActions(true); } } @@ -2846,7 +2846,7 @@ public final class L2PcInstance extends L2Playable broadcastPacket(new ChangeWaitType(this, ChangeWaitType.WT_STANDING)); // Schedule a stand up task to wait for the animation to finish - ThreadPoolManager.getInstance().scheduleGeneral(new StandUpTask(this), 2500); + ThreadPoolManager.schedule(new StandUpTask(this), 2500); } } @@ -4303,7 +4303,7 @@ public final class L2PcInstance extends L2Playable } if (Config.GAMEGUARD_ENFORCE) { - ThreadPoolManager.getInstance().scheduleGeneral(new GameGuardCheckTask(this), 30 * 1000); + ThreadPoolManager.schedule(new GameGuardCheckTask(this), 30 * 1000); } } @@ -8515,7 +8515,7 @@ public final class L2PcInstance extends L2Playable _inventoryDisable = val; if (val) { - ThreadPoolManager.getInstance().scheduleGeneral(new InventoryEnableTask(this), 1500); + ThreadPoolManager.schedule(new InventoryEnableTask(this), 1500); } } @@ -9817,7 +9817,7 @@ public final class L2PcInstance extends L2Playable { if (_taskWarnUserTakeBreak == null) { - _taskWarnUserTakeBreak = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new WarnUserTakeBreakTask(this), 3600000, 3600000); + _taskWarnUserTakeBreak = ThreadPoolManager.scheduleAtFixedRate(new WarnUserTakeBreakTask(this), 3600000, 3600000); } } @@ -9843,7 +9843,7 @@ public final class L2PcInstance extends L2Playable { if (_taskRentPet == null) { - _taskRentPet = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new RentPetTask(this), seconds * 1000L, seconds * 1000L); + _taskRentPet = ThreadPoolManager.scheduleAtFixedRate(new RentPetTask(this), seconds * 1000L, seconds * 1000L); } } @@ -9874,7 +9874,7 @@ public final class L2PcInstance extends L2Playable final int timeinwater = (int) getStat().getValue(Stats.BREATH, 60000); sendPacket(new SetupGauge(getObjectId(), 2, timeinwater)); - _taskWater = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new WaterTask(this), timeinwater, 1000); + _taskWater = ThreadPoolManager.scheduleAtFixedRate(new WaterTask(this), timeinwater, 1000); } } @@ -10255,7 +10255,7 @@ public final class L2PcInstance extends L2Playable { if (_teleportWatchdog == null) { - _teleportWatchdog = ThreadPoolManager.getInstance().scheduleGeneral(new TeleportWatchdogTask(this), Config.TELEPORT_WATCHDOG_TIMEOUT * 1000); + _teleportWatchdog = ThreadPoolManager.schedule(new TeleportWatchdogTask(this), Config.TELEPORT_WATCHDOG_TIMEOUT * 1000); } } } @@ -11145,7 +11145,7 @@ public final class L2PcInstance extends L2Playable } if (_fameTask == null) { - _fameTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FameTask(this, fameFixRate), delay, delay); + _fameTask = ThreadPoolManager.scheduleAtFixedRate(new FameTask(this, fameFixRate), delay, delay); } } @@ -11265,7 +11265,7 @@ public final class L2PcInstance extends L2Playable _soulTask.cancel(false); _soulTask = null; } - _soulTask = ThreadPoolManager.getInstance().scheduleGeneral(new ResetSoulsTask(this), 600000); + _soulTask = ThreadPoolManager.schedule(new ResetSoulsTask(this), 600000); } @@ -11608,7 +11608,7 @@ public final class L2PcInstance extends L2Playable sendPacket(new SetupGauge(3, (getCurrentFeed() * 10000) / getFeedConsume(), (getMaxFeed() * 10000) / getFeedConsume())); if (!isDead()) { - _mountFeedTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new PetFeedTask(this), 10000, 10000); + _mountFeedTask = ThreadPoolManager.scheduleAtFixedRate(new PetFeedTask(this), 10000, 10000); } } else if (_canFeed) @@ -11618,7 +11618,7 @@ public final class L2PcInstance extends L2Playable sendPacket(sg); if (!isDead()) { - _mountFeedTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new PetFeedTask(this), 10000, 10000); + _mountFeedTask = ThreadPoolManager.scheduleAtFixedRate(new PetFeedTask(this), 10000, 10000); } } } @@ -11695,7 +11695,7 @@ public final class L2PcInstance extends L2Playable public void enteredNoLanding(int delay) { - _dismountTask = ThreadPoolManager.getInstance().scheduleGeneral(new DismountTask(this), delay * 1000); + _dismountTask = ThreadPoolManager.schedule(new DismountTask(this), delay * 1000); } public void exitedNoLanding() @@ -11816,7 +11816,7 @@ public final class L2PcInstance extends L2Playable _chargeTask.cancel(false); _chargeTask = null; } - _chargeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ResetChargesTask(this), 600000); + _chargeTask = ThreadPoolManager.schedule(new ResetChargesTask(this), 600000); } /** @@ -12881,7 +12881,7 @@ public final class L2PcInstance extends L2Playable public void startRecoGiveTask() { // Create task to give new recommendations - _recoGiveTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new RecoGiveTask(this), 7200000, 3600000); + _recoGiveTask = ThreadPoolManager.scheduleAtFixedRate(new RecoGiveTask(this), 7200000, 3600000); // Store new data storeRecommendations(); @@ -13810,7 +13810,7 @@ public final class L2PcInstance extends L2Playable stopOnlineTimeUpdateTask(); } - _onlineTimeUpdateTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this::updateOnlineTime, 60 * 1000L, 60 * 1000L); + _onlineTimeUpdateTask = ThreadPoolManager.scheduleAtFixedRate(this::updateOnlineTime, 60 * 1000L, 60 * 1000L); } private void updateOnlineTime() diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2PetInstance.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2PetInstance.java index 026d13c866..9b9c9b794d 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2PetInstance.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2PetInstance.java @@ -1130,7 +1130,7 @@ public class L2PetInstance extends L2Summon stopFeed(); if (!isDead() && (getOwner().getPet() == this)) { - _feedTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FeedTask(), 10000, 10000); + _feedTask = ThreadPoolManager.scheduleAtFixedRate(new FeedTask(), 10000, 10000); } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2RaidBossInstance.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2RaidBossInstance.java index 408df2d07e..b2a9629352 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2RaidBossInstance.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2RaidBossInstance.java @@ -72,7 +72,7 @@ public class L2RaidBossInstance extends L2MonsterInstance @Override protected void startMaintenanceTask() { - _maintenanceTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(() -> checkAndReturnToSpawn(), 60000, getMaintenanceInterval() + Rnd.get(5000)); + _maintenanceTask = ThreadPoolManager.scheduleAtFixedRate(() -> checkAndReturnToSpawn(), 60000, getMaintenanceInterval() + Rnd.get(5000)); } protected void checkAndReturnToSpawn() diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2ServitorInstance.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2ServitorInstance.java index 0a240610de..dc45e82daa 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2ServitorInstance.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2ServitorInstance.java @@ -85,7 +85,7 @@ public class L2ServitorInstance extends L2Summon implements Runnable super.onSpawn(); if ((_lifeTime > 0) && (_summonLifeTask == null)) { - _summonLifeTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this, 0, 5000); + _summonLifeTask = ThreadPoolManager.scheduleAtFixedRate(this, 0, 5000); } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2SiegeFlagInstance.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2SiegeFlagInstance.java index 36f948d921..eb169af1ce 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2SiegeFlagInstance.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2SiegeFlagInstance.java @@ -163,7 +163,7 @@ public class L2SiegeFlagInstance extends L2Npc // send warning to owners of headquarters that theirs base is under attack _clan.broadcastToOnlineMembers(SystemMessage.getSystemMessage(SystemMessageId.YOUR_BASE_IS_BEING_ATTACKED)); setCanTalk(false); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleTalkTask(), 20000); + ThreadPoolManager.schedule(new ScheduleTalkTask(), 20000); } } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2TamedBeastInstance.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2TamedBeastInstance.java index 6ef311e1a9..0a04416d20 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2TamedBeastInstance.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2TamedBeastInstance.java @@ -153,7 +153,7 @@ public final class L2TamedBeastInstance extends L2FeedableBeastInstance { _durationCheckTask.cancel(true); } - _durationCheckTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new CheckDuration(this), DURATION_CHECK_INTERVAL, DURATION_CHECK_INTERVAL); + _durationCheckTask = ThreadPoolManager.scheduleAtFixedRate(new CheckDuration(this), DURATION_CHECK_INTERVAL, DURATION_CHECK_INTERVAL); } } @@ -217,10 +217,10 @@ public final class L2TamedBeastInstance extends L2FeedableBeastInstance int delay = 100; for (Skill skill : _beastSkills) { - ThreadPoolManager.getInstance().scheduleGeneral(new buffCast(skill), delay); + ThreadPoolManager.schedule(new buffCast(skill), delay); delay += (100 + skill.getHitTime()); } - ThreadPoolManager.getInstance().scheduleGeneral(new buffCast(null), delay); + ThreadPoolManager.schedule(new buffCast(null), delay); } private class buffCast implements Runnable @@ -284,7 +284,7 @@ public final class L2TamedBeastInstance extends L2FeedableBeastInstance { _buffTask.cancel(true); } - _buffTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new CheckOwnerBuffs(this, totalBuffsAvailable), BUFF_INTERVAL, BUFF_INTERVAL); + _buffTask = ThreadPoolManager.scheduleAtFixedRate(new CheckOwnerBuffs(this, totalBuffsAvailable), BUFF_INTERVAL, BUFF_INTERVAL); } } else diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2TrapInstance.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2TrapInstance.java index c4ab166c6d..6ae55f616d 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2TrapInstance.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/instance/L2TrapInstance.java @@ -77,7 +77,7 @@ public final class L2TrapInstance extends L2Npc _remainingTime = _lifeTime; if (_skill != null) { - _trapTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new TrapTask(this), TICK, TICK); + _trapTask = ThreadPoolManager.scheduleAtFixedRate(new TrapTask(this), TICK, TICK); } } @@ -341,7 +341,7 @@ public final class L2TrapInstance extends L2Npc EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); - ThreadPoolManager.getInstance().scheduleGeneral(new TrapTriggerTask(this), 500); + ThreadPoolManager.schedule(new TrapTriggerTask(this), 500); } public void unSummon() diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/request/AbstractRequest.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/request/AbstractRequest.java index b7f9e2c67c..7950d61315 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/request/AbstractRequest.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/request/AbstractRequest.java @@ -55,7 +55,7 @@ public abstract class AbstractRequest public void scheduleTimeout(long delay) { - _timeOutTask = ThreadPoolManager.getInstance().scheduleGeneral(this::onTimeout, delay); + _timeOutTask = ThreadPoolManager.schedule(this::onTimeout, delay); } public boolean isTimeout() diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/status/CharStatus.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/status/CharStatus.java index 09073aa317..53571ee400 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/status/CharStatus.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/status/CharStatus.java @@ -216,7 +216,7 @@ public class CharStatus final int period = Formulas.getRegeneratePeriod(getActiveChar()); // Create the HP/MP/CP Regeneration task - _regTask = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new RegenTask(), period, period); + _regTask = ThreadPoolManager.scheduleAtFixedRate(new RegenTask(), period, period); } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/tasks/attackable/CommandChannelTimer.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/tasks/attackable/CommandChannelTimer.java index 87cc5f4937..6f37725f33 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/tasks/attackable/CommandChannelTimer.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/tasks/attackable/CommandChannelTimer.java @@ -48,7 +48,7 @@ public final class CommandChannelTimer implements Runnable } else { - ThreadPoolManager.getInstance().scheduleGeneral(this, 10000); // 10sec + ThreadPoolManager.schedule(this, 10000); // 10sec } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/tasks/npc/RandomAnimationTask.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/tasks/npc/RandomAnimationTask.java index 68c814f0a2..a6ffb508f1 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/tasks/npc/RandomAnimationTask.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/tasks/npc/RandomAnimationTask.java @@ -91,7 +91,7 @@ public class RandomAnimationTask implements Runnable final int interval = Rnd.get(minWait, maxWait) * 1000; // Create a RandomAnimation Task that will be launched after the calculated delay - ThreadPoolManager.getInstance().scheduleGeneral(this, interval); + ThreadPoolManager.schedule(this, interval); } /** diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/tasks/npc/trap/TrapTriggerTask.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/tasks/npc/trap/TrapTriggerTask.java index 6fa1c2f1dd..b15e938ffe 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/tasks/npc/trap/TrapTriggerTask.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/tasks/npc/trap/TrapTriggerTask.java @@ -38,7 +38,7 @@ public class TrapTriggerTask implements Runnable try { _trap.doCast(_trap.getSkill()); - ThreadPoolManager.getInstance().scheduleGeneral(new TrapUnsummonTask(_trap), _trap.getSkill().getHitTime() + 300); + ThreadPoolManager.schedule(new TrapUnsummonTask(_trap), _trap.getSkill().getHitTime() + 300); } catch (Exception e) { diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/tasks/player/FlyMoveStartTask.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/tasks/player/FlyMoveStartTask.java index 1f789e0c09..4dff07f0c4 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/tasks/player/FlyMoveStartTask.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/actor/tasks/player/FlyMoveStartTask.java @@ -51,7 +51,7 @@ public class FlyMoveStartTask implements Runnable if (!_player.hasRequest(SayuneRequest.class)) { _player.sendPacket(ExNotifyFlyMoveStart.STATIC_PACKET); - ThreadPoolManager.getInstance().scheduleGeneral(this, 1000L); + ThreadPoolManager.schedule(this, 1000L); } } } \ No newline at end of file diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/announce/AutoAnnouncement.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/announce/AutoAnnouncement.java index 931905492d..7d2ed5035b 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/announce/AutoAnnouncement.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/announce/AutoAnnouncement.java @@ -160,7 +160,7 @@ public final class AutoAnnouncement extends Announcement implements Runnable _task.cancel(false); } _currentState = _repeat; - _task = ThreadPoolManager.getInstance().scheduleGeneral(this, _initial); + _task = ThreadPoolManager.schedule(this, _initial); } @Override @@ -178,7 +178,7 @@ public final class AutoAnnouncement extends Announcement implements Runnable _currentState--; } - _task = ThreadPoolManager.getInstance().scheduleGeneral(this, _delay); + _task = ThreadPoolManager.schedule(this, _delay); } } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/buylist/Product.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/buylist/Product.java index e5f383ff32..10242424c7 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/buylist/Product.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/buylist/Product.java @@ -119,7 +119,7 @@ public final class Product } if ((_restockTask == null) || _restockTask.isDone()) { - _restockTask = ThreadPoolManager.getInstance().scheduleGeneral(this::restock, getRestockDelay()); + _restockTask = ThreadPoolManager.schedule(this::restock, getRestockDelay()); } final boolean result = _count.addAndGet(-val) >= 0; save(); @@ -136,7 +136,7 @@ public final class Product final long remainTime = nextRestockTime - System.currentTimeMillis(); if (remainTime > 0) { - _restockTask = ThreadPoolManager.getInstance().scheduleGeneral(this::restock, remainTime); + _restockTask = ThreadPoolManager.schedule(this::restock, remainTime); } else { diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/cubic/CubicInstance.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/cubic/CubicInstance.java index ada76382ec..c92709158b 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/cubic/CubicInstance.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/cubic/CubicInstance.java @@ -52,8 +52,8 @@ public class CubicInstance private void activate() { - _skillUseTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this::tryToUseSkill, 0, _template.getDelay() * 1000); - _expireTask = ThreadPoolManager.getInstance().scheduleAi(this::deactivate, _template.getDuration() * 1000); + _skillUseTask = ThreadPoolManager.scheduleAtFixedRate(this::tryToUseSkill, 0, _template.getDelay() * 1000); + _expireTask = ThreadPoolManager.schedule(this::deactivate, _template.getDuration() * 1000); } public void deactivate() diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/BlockCheckerEngine.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/BlockCheckerEngine.java index e58d229768..c161d20dac 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/BlockCheckerEngine.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/BlockCheckerEngine.java @@ -306,7 +306,7 @@ public final class BlockCheckerEngine _abnormalEnd = true; - ThreadPoolManager.getInstance().executeGeneral(new EndEvent()); + ThreadPoolManager.execute(new EndEvent()); if (Config.DEBUG) { @@ -429,7 +429,7 @@ public final class BlockCheckerEngine } _isStarted = true; // Spawn the blocks - ThreadPoolManager.getInstance().executeGeneral(new SpawnRound(16, 1)); + ThreadPoolManager.execute(new SpawnRound(16, 1)); // Start up player parameters setUpPlayers(); // Set the started time @@ -463,15 +463,15 @@ public final class BlockCheckerEngine { case 1: // Schedule second spawn round - _task = ThreadPoolManager.getInstance().scheduleGeneral(new SpawnRound(20, 2), 60000); + _task = ThreadPoolManager.schedule(new SpawnRound(20, 2), 60000); break; case 2: // Schedule third spawn round - _task = ThreadPoolManager.getInstance().scheduleGeneral(new SpawnRound(14, 3), 60000); + _task = ThreadPoolManager.schedule(new SpawnRound(14, 3), 60000); break; case 3: // Schedule Event End Count Down - _task = ThreadPoolManager.getInstance().scheduleGeneral(new EndEvent(), 180000); + _task = ThreadPoolManager.schedule(new EndEvent(), 180000); break; } // random % 2, if == 0 will spawn a red block @@ -530,7 +530,7 @@ public final class BlockCheckerEngine SpawnTable.getInstance().addNewSpawn(girlSpawn, false); girlSpawn.init(); // Schedule his deletion after 9 secs of spawn - ThreadPoolManager.getInstance().scheduleGeneral(new CarryingGirlUnspawn(girlSpawn), 9000); + ThreadPoolManager.schedule(new CarryingGirlUnspawn(girlSpawn), 9000); } catch (Exception e) { @@ -573,7 +573,7 @@ public final class BlockCheckerEngine /* * private class CountDown implements Runnable { - * @Override public void run() { _holder.broadCastPacketToTeam(SystemMessage.getSystemMessage(SystemMessageId.BLOCK_CHECKER_WILL_END_IN_5_SECONDS)); ThreadPoolManager.getInstance().scheduleGeneral(new EndEvent(), 5000); } } + * @Override public void run() { _holder.broadCastPacketToTeam(SystemMessage.getSystemMessage(SystemMessageId.BLOCK_CHECKER_WILL_END_IN_5_SECONDS)); ThreadPoolManager.schedule(new EndEvent(), 5000); } } */ /** diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/Castle.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/Castle.java index 2ef599c33b..b657df5013 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/Castle.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/Castle.java @@ -166,11 +166,11 @@ public final class Castle extends AbstractResidence final long currentTime = System.currentTimeMillis(); if (_endDate > currentTime) { - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(cwh), _endDate - currentTime); + ThreadPoolManager.schedule(new FunctionTask(cwh), _endDate - currentTime); } else { - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(cwh), 0); + ThreadPoolManager.schedule(new FunctionTask(cwh), 0); } } @@ -204,7 +204,7 @@ public final class Castle extends AbstractResidence { ClanTable.getInstance().getClan(getOwnerId()).getWarehouse().destroyItemByItemId("CS_function_fee", Inventory.ADENA_ID, fee, null, null); } - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(true), getRate()); + ThreadPoolManager.schedule(new FunctionTask(true), getRate()); } else { diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/ClanHall.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/ClanHall.java index e8b2e61692..2cfbef3323 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/ClanHall.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/ClanHall.java @@ -263,7 +263,7 @@ public final class ClanHall extends AbstractResidence final int failDays = getCostFailDay(); final long time = failDays > 0 ? (failDays > 8 ? Instant.now().toEpochMilli() : Instant.ofEpochMilli(getPaidUntil()).plus(Duration.ofDays(failDays + 1)).toEpochMilli()) : getPaidUntil(); - _checkPaymentTask = ThreadPoolManager.getInstance().scheduleGeneral(new CheckPaymentTask(), time - System.currentTimeMillis()); + _checkPaymentTask = ThreadPoolManager.schedule(new CheckPaymentTask(), time - System.currentTimeMillis()); } else { @@ -363,7 +363,7 @@ public final class ClanHall extends AbstractResidence } else { - _checkPaymentTask = ThreadPoolManager.getInstance().scheduleGeneral(new CheckPaymentTask(), 1, TimeUnit.DAYS); + _checkPaymentTask = ThreadPoolManager.schedule(new CheckPaymentTask(), 24 * 60 * 60 * 1000); // 1 day final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.PAYMENT_FOR_YOUR_CLAN_HALL_HAS_NOT_BEEN_MADE_PLEASE_MAKE_PAYMENT_TO_YOUR_CLAN_WAREHOUSE_BY_S1_TOMORROW); sm.addInt(getLease()); clan.broadcastToOnlineMembers(sm); @@ -373,7 +373,7 @@ public final class ClanHall extends AbstractResidence { clan.getWarehouse().destroyItem("Clan Hall Lease", Inventory.ADENA_ID, getLease(), null, null); setPaidUntil(Instant.ofEpochMilli(getPaidUntil()).plus(Duration.ofDays(7)).toEpochMilli()); - _checkPaymentTask = ThreadPoolManager.getInstance().scheduleGeneral(new CheckPaymentTask(), getPaidUntil() - System.currentTimeMillis()); + _checkPaymentTask = ThreadPoolManager.schedule(new CheckPaymentTask(), getPaidUntil() - System.currentTimeMillis()); updateDB(); } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/Duel.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/Duel.java index c8cfdbc0a1..6879c073af 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/Duel.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/Duel.java @@ -99,7 +99,7 @@ public class Duel broadcastToTeam2(sm); } // Schedule duel start - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartDuelTask(this), 3000); + ThreadPoolManager.schedule(new ScheduleStartDuelTask(this), 3000); } public static class PlayerCondition @@ -207,14 +207,14 @@ public class Duel } case Continue: { - ThreadPoolManager.getInstance().scheduleGeneral(this, 1000); + ThreadPoolManager.schedule(this, 1000); break; } default: { setFinished(true); playKneelAnimation(); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndDuelTask(_duel, _duel.checkEndDuelCondition()), 5000); + ThreadPoolManager.schedule(new ScheduleEndDuelTask(_duel, _duel.checkEndDuelCondition()), 5000); if (getDueldInstance() != null) { getDueldInstance().destroy(); @@ -255,11 +255,11 @@ public class Duel _duel.teleportPlayers(); // give players 20 seconds to complete teleport and get ready (its ought to be 30 on offical..) - ThreadPoolManager.getInstance().scheduleGeneral(this, 20000); + ThreadPoolManager.schedule(this, 20000); } else if (count > 0) // duel not started yet - continue countdown { - ThreadPoolManager.getInstance().scheduleGeneral(this, 1000); + ThreadPoolManager.schedule(this, 1000); } else { @@ -436,7 +436,7 @@ public class Duel broadcastToTeam2(B04_S01); // start duelling task - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleDuelTask(this), 1000); + ThreadPoolManager.schedule(new ScheduleDuelTask(this), 1000); } /** diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/Fort.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/Fort.java index 1aa9d4cc83..d892c13f8c 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/Fort.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/Fort.java @@ -166,11 +166,11 @@ public final class Fort extends AbstractResidence final long currentTime = System.currentTimeMillis(); if (_endDate > currentTime) { - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(cwh), _endDate - currentTime); + ThreadPoolManager.schedule(new FunctionTask(cwh), _endDate - currentTime); } else { - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(cwh), 0); + ThreadPoolManager.schedule(new FunctionTask(cwh), 0); } } @@ -204,7 +204,7 @@ public final class Fort extends AbstractResidence { getOwnerClan().getWarehouse().destroyItemByItemId("CS_function_fee", Inventory.ADENA_ID, fee, null, null); } - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(true), getRate()); + ThreadPoolManager.schedule(new FunctionTask(true), getRate()); } else { @@ -273,7 +273,7 @@ public final class Fort extends AbstractResidence public void endOfSiege(L2Clan clan) { - ThreadPoolManager.getInstance().executeAi(new endFortressSiege(this, clan)); + ThreadPoolManager.execute(new endFortressSiege(this, clan)); } /** @@ -594,15 +594,15 @@ public final class Fort extends AbstractResidence initial = (Config.FS_UPDATE_FRQ * 60000L) - initial; if ((Config.FS_MAX_OWN_TIME <= 0) || (getOwnedTime() < (Config.FS_MAX_OWN_TIME * 3600))) { - _FortUpdater[0] = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FortUpdater(this, clan, runCount, UpdaterType.PERIODIC_UPDATE), initial, Config.FS_UPDATE_FRQ * 60000L); // Schedule owner tasks to start running + _FortUpdater[0] = ThreadPoolManager.scheduleAtFixedRate(new FortUpdater(this, clan, runCount, UpdaterType.PERIODIC_UPDATE), initial, Config.FS_UPDATE_FRQ * 60000L); // Schedule owner tasks to start running if (Config.FS_MAX_OWN_TIME > 0) { - _FortUpdater[1] = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FortUpdater(this, clan, runCount, UpdaterType.MAX_OWN_TIME), 3600000, 3600000); // Schedule owner tasks to remove owener + _FortUpdater[1] = ThreadPoolManager.scheduleAtFixedRate(new FortUpdater(this, clan, runCount, UpdaterType.MAX_OWN_TIME), 3600000, 3600000); // Schedule owner tasks to remove owener } } else { - _FortUpdater[1] = ThreadPoolManager.getInstance().scheduleGeneral(new FortUpdater(this, clan, 0, UpdaterType.MAX_OWN_TIME), 60000); // Schedule owner tasks to remove owner + _FortUpdater[1] = ThreadPoolManager.schedule(new FortUpdater(this, clan, 0, UpdaterType.MAX_OWN_TIME), 60000); // Schedule owner tasks to remove owner } } else @@ -836,10 +836,10 @@ public final class Fort extends AbstractResidence { _FortUpdater[1].cancel(false); } - _FortUpdater[0] = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FortUpdater(this, clan, 0, UpdaterType.PERIODIC_UPDATE), Config.FS_UPDATE_FRQ * 60000L, Config.FS_UPDATE_FRQ * 60000L); // Schedule owner tasks to start running + _FortUpdater[0] = ThreadPoolManager.scheduleAtFixedRate(new FortUpdater(this, clan, 0, UpdaterType.PERIODIC_UPDATE), Config.FS_UPDATE_FRQ * 60000L, Config.FS_UPDATE_FRQ * 60000L); // Schedule owner tasks to start running if (Config.FS_MAX_OWN_TIME > 0) { - _FortUpdater[1] = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FortUpdater(this, clan, 0, UpdaterType.MAX_OWN_TIME), 3600000, 3600000); // Schedule owner tasks to remove owener + _FortUpdater[1] = ThreadPoolManager.scheduleAtFixedRate(new FortUpdater(this, clan, 0, UpdaterType.MAX_OWN_TIME), 3600000, 3600000); // Schedule owner tasks to remove owener } } else diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/FortSiege.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/FortSiege.java index c3c80f4589..840cacddb2 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/FortSiege.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/FortSiege.java @@ -111,7 +111,7 @@ public class FortSiege implements Siegable final SystemMessage sm; if (_time == 3600) // 1hr remains { - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(600), 3000000); // Prepare task for 10 minutes left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(600), 3000000); // Prepare task for 10 minutes left. } else if (_time == 600) // 10min remains { @@ -119,49 +119,49 @@ public class FortSiege implements Siegable sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(10); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(300), 300000); // Prepare task for 5 minutes left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(300), 300000); // Prepare task for 5 minutes left. } else if (_time == 300) // 5min remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(5); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(60), 240000); // Prepare task for 1 minute left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(60), 240000); // Prepare task for 1 minute left. } else if (_time == 60) // 1min remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(1); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(30), 30000); // Prepare task for 30 seconds left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(30), 30000); // Prepare task for 30 seconds left. } else if (_time == 30) // 30seconds remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_SECOND_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(30); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(10), 20000); // Prepare task for 10 seconds left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(10), 20000); // Prepare task for 10 seconds left. } else if (_time == 10) // 10seconds remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_SECOND_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(10); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(5), 5000); // Prepare task for 5 seconds left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(5), 5000); // Prepare task for 5 seconds left. } else if (_time == 5) // 5seconds remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_SECOND_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(5); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(1), 4000); // Prepare task for 1 seconds left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(1), 4000); // Prepare task for 1 seconds left. } else if (_time == 1) // 1seconds remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_SECOND_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(1); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(0), 1000); // Prepare task start siege. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(0), 1000); // Prepare task start siege. } else if (_time == 0)// start siege { @@ -274,7 +274,7 @@ public class FortSiege implements Siegable unspawnSiegeGuard(); // Remove all spawned siege guard from this fort getFort().resetDoors(); // Respawn door to fort - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleSuspiciousMerchantSpawn(), FortSiegeManager.getInstance().getSuspiciousMerchantRespawnDelay() * 60 * 1000L); // Prepare 3hr task for suspicious merchant respawn + ThreadPoolManager.schedule(new ScheduleSuspiciousMerchantSpawn(), FortSiegeManager.getInstance().getSuspiciousMerchantRespawnDelay() * 60 * 1000L); // Prepare 3hr task for suspicious merchant respawn setSiegeDateTime(true); // store suspicious merchant spawn in DB if (_siegeEnd != null) @@ -336,7 +336,7 @@ public class FortSiege implements Siegable getFort().getZone().updateZoneStatusForCharactersInside(); // Schedule a task to prepare auto siege end - _siegeEnd = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(), FortSiegeManager.getInstance().getSiegeLength() * 60 * 1000L); // Prepare auto end task + _siegeEnd = ThreadPoolManager.schedule(new ScheduleEndSiegeTask(), FortSiegeManager.getInstance().getSiegeLength() * 60 * 1000L); // Prepare auto end task final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THE_FORTRESS_BATTLE_S1_HAS_BEGUN); sm.addCastleId(getFort().getResidenceId()); @@ -672,7 +672,7 @@ public class FortSiege implements Siegable else if (_siegeRestore == null) { getFort().getSiege().announceToPlayer(SystemMessage.getSystemMessage(SystemMessageId.THE_BARRACKS_HAVE_BEEN_SEIZED)); - _siegeRestore = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleSiegeRestore(), FortSiegeManager.getInstance().getCountDownLength() * 60 * 1000L); + _siegeRestore = ThreadPoolManager.schedule(new ScheduleSiegeRestore(), FortSiegeManager.getInstance().getCountDownLength() * 60 * 1000L); } else { @@ -830,7 +830,7 @@ public class FortSiege implements Siegable saveFortSiege(); clearSiegeClan(); // remove all clans // spawn suspicious merchant immediately - ThreadPoolManager.getInstance().executeGeneral(new ScheduleSuspiciousMerchantSpawn()); + ThreadPoolManager.execute(new ScheduleSuspiciousMerchantSpawn()); } else { @@ -838,33 +838,33 @@ public class FortSiege implements Siegable if (getAttackerClans().isEmpty()) { // no attackers - waiting for suspicious merchant spawn - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleSuspiciousMerchantSpawn(), delay); + ThreadPoolManager.schedule(new ScheduleSuspiciousMerchantSpawn(), delay); } else { // preparing start siege task if (delay > 3600000) // more than hour, how this can happens ? spawn suspicious merchant { - ThreadPoolManager.getInstance().executeGeneral(new ScheduleSuspiciousMerchantSpawn()); - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(3600), delay - 3600000); + ThreadPoolManager.execute(new ScheduleSuspiciousMerchantSpawn()); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(3600), delay - 3600000); } if (delay > 600000) // more than 10 min, spawn suspicious merchant { - ThreadPoolManager.getInstance().executeGeneral(new ScheduleSuspiciousMerchantSpawn()); - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(600), delay - 600000); + ThreadPoolManager.execute(new ScheduleSuspiciousMerchantSpawn()); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(600), delay - 600000); } else if (delay > 300000) { - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(300), delay - 300000); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(300), delay - 300000); } else if (delay > 60000) { - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(60), delay - 60000); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(60), delay - 60000); } else { // lower than 1 min, set to 1 min - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(60), 0); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(60), 0); } _log.info(getClass().getSimpleName() + ": Siege of " + getFort().getName() + " fort: " + getFort().getSiegeDate().getTime()); @@ -894,7 +894,7 @@ public class FortSiege implements Siegable } // Execute siege auto start - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(3600), 0); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(3600), 0); } /** diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/Siege.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/Siege.java index a9ead559aa..4d1d933e3a 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/Siege.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/entity/Siege.java @@ -103,35 +103,35 @@ public class Siege implements Siegable final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_HOUR_S_UNTIL_CASTLE_SIEGE_CONCLUSION); sm.addInt(2); announceToPlayer(sm, true); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 3600000); // Prepare task for 1 hr left. + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 3600000); // Prepare task for 1 hr left. } else if ((timeRemaining <= 3600000) && (timeRemaining > 600000)) { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_CASTLE_SIEGE_CONCLUSION); sm.addInt((int) timeRemaining / 60000); announceToPlayer(sm, true); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 600000); // Prepare task for 10 minute left. + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 600000); // Prepare task for 10 minute left. } else if ((timeRemaining <= 600000) && (timeRemaining > 300000)) { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_CASTLE_SIEGE_CONCLUSION); sm.addInt((int) timeRemaining / 60000); announceToPlayer(sm, true); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 300000); // Prepare task for 5 minute left. + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 300000); // Prepare task for 5 minute left. } else if ((timeRemaining <= 300000) && (timeRemaining > 10000)) { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_CASTLE_SIEGE_CONCLUSION); sm.addInt((int) timeRemaining / 60000); announceToPlayer(sm, true); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 10000); // Prepare task for 10 seconds count down + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 10000); // Prepare task for 10 seconds count down } else if ((timeRemaining <= 10000) && (timeRemaining > 0)) { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THIS_CASTLE_SIEGE_WILL_END_IN_S1_SECOND_S); sm.addInt((int) timeRemaining / 1000); announceToPlayer(sm, true); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(_castleInst), timeRemaining); // Prepare task for second count down + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(_castleInst), timeRemaining); // Prepare task for second count down } else { @@ -170,7 +170,7 @@ public class Siege implements Siegable final long regTimeRemaining = getTimeRegistrationOverDate().getTimeInMillis() - Calendar.getInstance().getTimeInMillis(); if (regTimeRemaining > 0) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), regTimeRemaining); + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), regTimeRemaining); return; } endTimeRegistration(true); @@ -179,7 +179,7 @@ public class Siege implements Siegable final long timeRemaining = getSiegeDate().getTimeInMillis() - Calendar.getInstance().getTimeInMillis(); if (timeRemaining > 86400000) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 86400000); // Prepare task for 24 before siege start to end registration + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 86400000); // Prepare task for 24 before siege start to end registration } else if ((timeRemaining <= 86400000) && (timeRemaining > 13600000)) { @@ -188,23 +188,23 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(sm); _isRegistrationOver = true; clearSiegeWaitingClan(); - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 13600000); // Prepare task for 1 hr left before siege start. + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 13600000); // Prepare task for 1 hr left before siege start. } else if ((timeRemaining <= 13600000) && (timeRemaining > 600000)) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 600000); // Prepare task for 10 minute left. + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 600000); // Prepare task for 10 minute left. } else if ((timeRemaining <= 600000) && (timeRemaining > 300000)) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 300000); // Prepare task for 5 minute left. + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 300000); // Prepare task for 5 minute left. } else if ((timeRemaining <= 300000) && (timeRemaining > 10000)) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 10000); // Prepare task for 10 seconds count down + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 10000); // Prepare task for 10 seconds count down } else if ((timeRemaining <= 10000) && (timeRemaining > 0)) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining); // Prepare task for second count down + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining); // Prepare task for second count down } else { @@ -523,7 +523,7 @@ public class Siege implements Siegable // Schedule a task to prepare auto siege end _siegeEndDate = Calendar.getInstance(); _siegeEndDate.add(Calendar.MINUTE, SiegeManager.getInstance().getSiegeLength()); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(getCastle()), 1000); // Prepare auto end task + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(getCastle()), 1000); // Prepare auto end task final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THE_S1_SIEGE_HAS_STARTED); sm.addCastleId(getCastle().getResidenceId()); @@ -1095,7 +1095,7 @@ public class Siege implements Siegable { _scheduledStartSiegeTask.cancel(false); } - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new Siege.ScheduleStartSiegeTask(getCastle()), 1000); + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new Siege.ScheduleStartSiegeTask(getCastle()), 1000); } /** @@ -1413,7 +1413,7 @@ public class Siege implements Siegable if (_scheduledStartSiegeTask != null) { _scheduledStartSiegeTask.cancel(true); - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new Siege.ScheduleStartSiegeTask(getCastle()), 1000); + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new Siege.ScheduleStartSiegeTask(getCastle()), 1000); } try (Connection con = DatabaseFactory.getInstance().getConnection(); diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/eventengine/EventScheduler.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/eventengine/EventScheduler.java index fdc58c3301..8f25107013 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/eventengine/EventScheduler.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/eventengine/EventScheduler.java @@ -115,7 +115,7 @@ public class EventScheduler if (timeSchedule <= (30 * 1000)) { LOGGER.warning("Wrong reschedule for " + _eventManager.getClass().getSimpleName() + " end up run in " + (timeSchedule / 1000) + " seconds!"); - ThreadPoolManager.getInstance().scheduleEvent(this::startScheduler, timeSchedule + 1000); + ThreadPoolManager.schedule(this::startScheduler, timeSchedule + 1000); return; } @@ -124,14 +124,14 @@ public class EventScheduler _task.cancel(false); } - _task = ThreadPoolManager.getInstance().scheduleEvent(() -> + _task = ThreadPoolManager.schedule(() -> { run(); updateLastRun(); if (isRepeating()) { - ThreadPoolManager.getInstance().scheduleEvent(this::startScheduler, 1000); + ThreadPoolManager.schedule(this::startScheduler, 1000); } }, timeSchedule); } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/events/EventDispatcher.java index c7251bbe59..2e551991b6 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -17,7 +17,6 @@ package com.l2jmobius.gameserver.model.events; import java.util.Queue; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -116,7 +115,7 @@ public final class EventDispatcher if (hasListeners) { - ThreadPoolManager.getInstance().executeEvent(() -> notifyEventToMultipleContainers(event, containers, null)); + ThreadPoolManager.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } } @@ -130,22 +129,7 @@ public final class EventDispatcher { if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) { - ThreadPoolManager.getInstance().scheduleEvent(() -> notifyEvent(event, container, null), delay); - } - } - - /** - * Scheduling current listener notification asynchronously after specified delay. - * @param event - * @param container - * @param delay - * @param unit - */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay, TimeUnit unit) - { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) - { - ThreadPoolManager.getInstance().scheduleEvent(() -> notifyEvent(event, container, null), delay, unit); + ThreadPoolManager.schedule(() -> notifyEvent(event, container, null), delay); } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/events/timers/TimerHolder.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/events/timers/TimerHolder.java index 1a0961ed28..98bce44327 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/events/timers/TimerHolder.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/events/timers/TimerHolder.java @@ -58,7 +58,7 @@ public class TimerHolder implements Runnable _eventScript = eventScript; _cancelScript = cancelScript; _postExecutor = postExecutor; - _task = isRepeating ? ThreadPoolManager.getInstance().scheduleEventAtFixedRate(this, _time, _time) : ThreadPoolManager.getInstance().scheduleEvent(this, _time); + _task = isRepeating ? ThreadPoolManager.scheduleAtFixedRate(this, _time, _time) : ThreadPoolManager.schedule(this, _time); TimersManager.getInstance().registerTimer(this); } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/instancezone/Instance.java index c55257fc29..232944b028 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/instancezone/Instance.java @@ -290,7 +290,7 @@ public final class Instance implements IIdentifiable, INamable } else if ((emptyTime >= 0) && (_emptyDestroyTask == null) && (getRemainingTime() < emptyTime)) { - _emptyDestroyTask = ThreadPoolManager.getInstance().scheduleGeneral(this::destroy, emptyTime); + _emptyDestroyTask = ThreadPoolManager.schedule(this::destroy, emptyTime); } } } @@ -684,11 +684,11 @@ public final class Instance implements IIdentifiable, INamable sendWorldDestroyMessage(minutes); if (minutes <= 5) // Message 1 minute before destroy { - _cleanUpTask = ThreadPoolManager.getInstance().scheduleGeneral(this::cleanUp, millis - 60000); + _cleanUpTask = ThreadPoolManager.schedule(this::cleanUp, millis - 60000); } else // Message 5 minutes before destroy { - _cleanUpTask = ThreadPoolManager.getInstance().scheduleGeneral(this::cleanUp, millis - (5 * 60000)); + _cleanUpTask = ThreadPoolManager.schedule(this::cleanUp, millis - (5 * 60000)); } } } @@ -900,13 +900,13 @@ public final class Instance implements IIdentifiable, INamable player.sendPacket(sm); // Start eject task - _ejectDeadTasks.put(player.getObjectId(), ThreadPoolManager.getInstance().scheduleGeneral(() -> + _ejectDeadTasks.put(player.getObjectId(), ThreadPoolManager.schedule(() -> { if (player.isDead()) { ejectPlayer(player.getActingPlayer()); } - }, _template.getEjectTime(), TimeUnit.MINUTES)); + }, _template.getEjectTime() * 60 * 1000)); // minutes to milliseconds } /** @@ -1128,12 +1128,12 @@ public final class Instance implements IIdentifiable, INamable if (getRemainingTime() <= TimeUnit.MINUTES.toMillis(1)) { sendWorldDestroyMessage(1); - _cleanUpTask = ThreadPoolManager.getInstance().scheduleGeneral(this::destroy, 1, TimeUnit.MINUTES); + _cleanUpTask = ThreadPoolManager.schedule(this::destroy, 60 * 1000); // 1 minute } else { sendWorldDestroyMessage(5); - _cleanUpTask = ThreadPoolManager.getInstance().scheduleGeneral(this::cleanUp, 5, TimeUnit.MINUTES); + _cleanUpTask = ThreadPoolManager.schedule(this::cleanUp, 5 * 60 * 1000); // 5 minutes } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/itemauction/ItemAuction.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/itemauction/ItemAuction.java index caee88ddf3..aaab55dec7 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/itemauction/ItemAuction.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/itemauction/ItemAuction.java @@ -400,7 +400,7 @@ public final class ItemAuction public final void broadcastToAllBidders(IClientOutgoingPacket packet) { - ThreadPoolManager.getInstance().executeGeneral(() -> broadcastToAllBiddersInternal(packet)); + ThreadPoolManager.execute(() -> broadcastToAllBiddersInternal(packet)); } public final void broadcastToAllBiddersInternal(IClientOutgoingPacket packet) diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/itemauction/ItemAuctionInstance.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/itemauction/ItemAuctionInstance.java index 6b216c3ba4..544091dcd5 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/itemauction/ItemAuctionInstance.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/itemauction/ItemAuctionInstance.java @@ -331,17 +331,17 @@ public final class ItemAuctionInstance { if (currentAuction.getAuctionState() == ItemAuctionState.STARTED) { - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleAuctionTask(currentAuction), Math.max(currentAuction.getEndingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(new ScheduleAuctionTask(currentAuction), Math.max(currentAuction.getEndingTime() - System.currentTimeMillis(), 0L))); } else { - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleAuctionTask(currentAuction), Math.max(currentAuction.getStartingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(new ScheduleAuctionTask(currentAuction), Math.max(currentAuction.getStartingTime() - System.currentTimeMillis(), 0L))); } LOGGER.info(getClass().getSimpleName() + ": Schedule current auction " + currentAuction.getAuctionId() + " for instance " + _instanceId); } else { - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleAuctionTask(nextAuction), Math.max(nextAuction.getStartingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(new ScheduleAuctionTask(nextAuction), Math.max(nextAuction.getStartingTime() - System.currentTimeMillis(), 0L))); LOGGER.info(getClass().getSimpleName() + ": Schedule next auction " + nextAuction.getAuctionId() + " on " + DATE_FORMAT.format(new Date(nextAuction.getStartingTime())) + " for instance " + _instanceId); } } @@ -429,7 +429,7 @@ public final class ItemAuctionInstance if (_auction.getScheduledAuctionEndingExtendState() == ItemAuctionExtendState.INITIAL) { _auction.setScheduledAuctionEndingExtendState(ItemAuctionExtendState.EXTEND_BY_5_MIN); - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); return; } break; @@ -440,7 +440,7 @@ public final class ItemAuctionInstance if (_auction.getScheduledAuctionEndingExtendState() != ItemAuctionExtendState.EXTEND_BY_3_MIN) { _auction.setScheduledAuctionEndingExtendState(ItemAuctionExtendState.EXTEND_BY_3_MIN); - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); return; } break; @@ -451,7 +451,7 @@ public final class ItemAuctionInstance if (_auction.getScheduledAuctionEndingExtendState() != ItemAuctionExtendState.EXTEND_BY_CONFIG_PHASE_B) { _auction.setScheduledAuctionEndingExtendState(ItemAuctionExtendState.EXTEND_BY_CONFIG_PHASE_B); - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); return; } break; @@ -462,7 +462,7 @@ public final class ItemAuctionInstance if (_auction.getScheduledAuctionEndingExtendState() != ItemAuctionExtendState.EXTEND_BY_CONFIG_PHASE_A) { _auction.setScheduledAuctionEndingExtendState(ItemAuctionExtendState.EXTEND_BY_CONFIG_PHASE_A); - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); return; } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/items/instance/L2ItemInstance.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/items/instance/L2ItemInstance.java index b8f458239e..af1054767c 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/items/instance/L2ItemInstance.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/items/instance/L2ItemInstance.java @@ -1412,7 +1412,7 @@ public final class L2ItemInstance extends L2Object return; } _consumingMana = true; - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleConsumeManaTask(this), MANA_CONSUMPTION_RATE); + ThreadPoolManager.schedule(new ScheduleConsumeManaTask(this), MANA_CONSUMPTION_RATE); } /** @@ -1545,7 +1545,7 @@ public final class L2ItemInstance extends L2Object public final void dropMe(L2Character dropper, int x, int y, int z) { - ThreadPoolManager.getInstance().executeGeneral(new ItemDropTask(this, dropper, x, y, z)); + ThreadPoolManager.execute(new ItemDropTask(this, dropper, x, y, z)); if ((dropper != null) && dropper.isPlayer()) { // Notify to scripts @@ -1833,7 +1833,7 @@ public final class L2ItemInstance extends L2Object { _lifeTimeTask.cancel(true); } - _lifeTimeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleLifeTimeTask(this), getRemainingTime()); + _lifeTimeTask = ThreadPoolManager.schedule(new ScheduleLifeTimeTask(this), getRemainingTime()); } } @@ -2379,11 +2379,11 @@ public final class L2ItemInstance extends L2Object final long time = getVisualLifeTime() - System.currentTimeMillis(); if (time > 0) { - _appearanceLifeTimeTask = ThreadPoolManager.getInstance().scheduleGeneral(this::onVisualLifeTimeEnd, time); + _appearanceLifeTimeTask = ThreadPoolManager.schedule(this::onVisualLifeTimeEnd, time); } else { - ThreadPoolManager.getInstance().executeGeneral(this::onVisualLifeTimeEnd); + ThreadPoolManager.execute(this::onVisualLifeTimeEnd); } } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/olympiad/Olympiad.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/olympiad/Olympiad.java index b7f07cadea..edbb47633b 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/olympiad/Olympiad.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/olympiad/Olympiad.java @@ -200,7 +200,7 @@ public class Olympiad extends ListenersContainer if (_validationEnd > Calendar.getInstance().getTimeInMillis()) { loadNoblesRank(); - _scheduledValdationTask = ThreadPoolManager.getInstance().scheduleGeneral(new ValidationEndTask(), getMillisToValidationEnd()); + _scheduledValdationTask = ThreadPoolManager.schedule(new ValidationEndTask(), getMillisToValidationEnd()); } else { @@ -357,7 +357,7 @@ public class Olympiad extends ListenersContainer _scheduledOlympiadEnd.cancel(true); } - _scheduledOlympiadEnd = ThreadPoolManager.getInstance().scheduleGeneral(new OlympiadEndTask(), getMillisToOlympiadEnd()); + _scheduledOlympiadEnd = ThreadPoolManager.schedule(new OlympiadEndTask(), getMillisToOlympiadEnd()); updateCompStatus(); } @@ -391,7 +391,7 @@ public class Olympiad extends ListenersContainer _validationEnd = validationEnd.getTimeInMillis() + VALIDATION_PERIOD; loadNoblesRank(); - _scheduledValdationTask = ThreadPoolManager.getInstance().scheduleGeneral(new ValidationEndTask(), getMillisToValidationEnd()); + _scheduledValdationTask = ThreadPoolManager.schedule(new ValidationEndTask(), getMillisToValidationEnd()); } } @@ -439,7 +439,7 @@ public class Olympiad extends ListenersContainer LOGGER.info(getClass().getSimpleName() + ": Event starts/started: " + _compStart.getTime()); } - _scheduledCompStart = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _scheduledCompStart = ThreadPoolManager.schedule(() -> { if (isOlympiadEnd()) { @@ -452,19 +452,19 @@ public class Olympiad extends ListenersContainer LOGGER.info(getClass().getSimpleName() + ": Olympiad Games have started."); _logResults.info("Result,Player1,Player2,Player1 HP,Player2 HP,Player1 Damage,Player2 Damage,Points,Classed"); - _gameManager = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(OlympiadGameManager.getInstance(), 30000, 30000); + _gameManager = ThreadPoolManager.scheduleAtFixedRate(OlympiadGameManager.getInstance(), 30000, 30000); if (Config.ALT_OLY_ANNOUNCE_GAMES) { - _gameAnnouncer = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new OlympiadAnnouncer(), 30000, 500); + _gameAnnouncer = ThreadPoolManager.scheduleAtFixedRate(new OlympiadAnnouncer(), 30000, 500); } final long regEnd = getMillisToCompEnd() - 600000; if (regEnd > 0) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> Broadcast.toAllOnlinePlayers(SystemMessage.getSystemMessage(SystemMessageId.THE_OLYMPIAD_REGISTRATION_PERIOD_HAS_ENDED)), regEnd); + ThreadPoolManager.schedule(() -> Broadcast.toAllOnlinePlayers(SystemMessage.getSystemMessage(SystemMessageId.THE_OLYMPIAD_REGISTRATION_PERIOD_HAS_ENDED)), regEnd); } - _scheduledCompEnd = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _scheduledCompEnd = ThreadPoolManager.schedule(() -> { if (isOlympiadEnd()) { @@ -519,7 +519,7 @@ public class Olympiad extends ListenersContainer _scheduledOlympiadEnd.cancel(true); } - _scheduledOlympiadEnd = ThreadPoolManager.getInstance().scheduleGeneral(new OlympiadEndTask(), 0); + _scheduledOlympiadEnd = ThreadPoolManager.schedule(new OlympiadEndTask(), 0); } protected long getMillisToValidationEnd() @@ -608,7 +608,7 @@ public class Olympiad extends ListenersContainer private void scheduleWeeklyChange() { - _scheduledWeeklyTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(() -> + _scheduledWeeklyTask = ThreadPoolManager.scheduleAtFixedRate(() -> { addWeeklyPoints(); LOGGER.info(getClass().getSimpleName() + ": Added weekly points to nobles"); diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java index d73f155193..f2425871a3 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java @@ -170,7 +170,7 @@ public final class OlympiadGameTask implements Runnable _game = game; _state = GameState.BEGIN; _needAnnounce = false; - ThreadPoolManager.getInstance().executeGeneral(this); + ThreadPoolManager.execute(this); } @Override @@ -341,7 +341,7 @@ public final class OlympiadGameTask implements Runnable return; } } - ThreadPoolManager.getInstance().scheduleGeneral(this, delay * 1000); + ThreadPoolManager.schedule(this, delay * 1000); } catch (Exception e) { @@ -361,7 +361,7 @@ public final class OlympiadGameTask implements Runnable _log.log(Level.WARNING, "Exception in " + _state + ", trying to port players back: " + e.getMessage(), e); _state = GameState.GAME_STOPPED; - ThreadPoolManager.getInstance().scheduleGeneral(this, 1000); + ThreadPoolManager.schedule(this, 1000); } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/punishment/PunishmentTask.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/punishment/PunishmentTask.java index 013c69f09a..bc8f5d0bc3 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/punishment/PunishmentTask.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/punishment/PunishmentTask.java @@ -147,7 +147,7 @@ public class PunishmentTask implements Runnable onStart(); if (_expirationTime > 0) // Has expiration? { - _task = ThreadPoolManager.getInstance().scheduleGeneral(this, (_expirationTime - System.currentTimeMillis())); + _task = ThreadPoolManager.schedule(this, (_expirationTime - System.currentTimeMillis())); } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/quest/LongTimeEvent.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/quest/LongTimeEvent.java index 0f19e40b4e..d197a06b7b 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/quest/LongTimeEvent.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/quest/LongTimeEvent.java @@ -91,7 +91,7 @@ public class LongTimeEvent extends Quest else if (_eventPeriod.getStartDate().after(new Date())) { final long delay = _eventPeriod.getStartDate().getTime() - System.currentTimeMillis(); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStart(), delay); + ThreadPoolManager.schedule(new ScheduleStart(), delay); _log.info("Event " + _eventName + " will be started at " + _eventPeriod.getEndDate()); } else @@ -301,7 +301,7 @@ public class LongTimeEvent extends Quest AnnouncementsTable.getInstance().addAnnouncement(new EventAnnouncement(_eventPeriod, _onEnterMsg)); // Schedule event end (now only for message sending) - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEnd(), millisToEventEnd); + ThreadPoolManager.schedule(new ScheduleEnd(), millisToEventEnd); } /** diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/quest/QuestTimer.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/quest/QuestTimer.java index b468ad4c99..0eb81e0589 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/quest/QuestTimer.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/quest/QuestTimer.java @@ -68,7 +68,7 @@ public class QuestTimer _player = player; _npc = npc; _isRepeating = repeating; - _schedular = repeating ? ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new ScheduleTimerTask(), time, time) : ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleTimerTask(), time); + _schedular = repeating ? ThreadPoolManager.scheduleAtFixedRate(new ScheduleTimerTask(), time, time) : ThreadPoolManager.schedule(new ScheduleTimerTask(), time); } public QuestTimer(Quest quest, String name, long time, L2Npc npc, L2PcInstance player) diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/residences/ResidenceFunction.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/residences/ResidenceFunction.java index 6ebf0aba8e..9b93abc89c 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/residences/ResidenceFunction.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/residences/ResidenceFunction.java @@ -65,7 +65,7 @@ public class ResidenceFunction final ResidenceFunctionTemplate template = getTemplate(); if ((template != null) && (_expiration > System.currentTimeMillis())) { - _task = ThreadPoolManager.getInstance().scheduleGeneral(this::onFunctionExpiration, _expiration - System.currentTimeMillis()); + _task = ThreadPoolManager.schedule(this::onFunctionExpiration, _expiration - System.currentTimeMillis()); } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/shuttle/L2ShuttleEngine.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/shuttle/L2ShuttleEngine.java index 251b61c206..6fb07987fe 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/shuttle/L2ShuttleEngine.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/shuttle/L2ShuttleEngine.java @@ -64,7 +64,7 @@ public class L2ShuttleEngine implements Runnable _shuttle.openDoor(0); _shuttle.closeDoor(1); _shuttle.broadcastShuttleInfo(); - ThreadPoolManager.getInstance().scheduleGeneral(this, DELAY); + ThreadPoolManager.schedule(this, DELAY); break; } case 1: @@ -74,7 +74,7 @@ public class L2ShuttleEngine implements Runnable _shuttle.closeDoor(0); _shuttle.closeDoor(1); _shuttle.broadcastShuttleInfo(); - ThreadPoolManager.getInstance().scheduleGeneral(this, 1000); + ThreadPoolManager.schedule(this, 1000); break; } case 2: @@ -89,7 +89,7 @@ public class L2ShuttleEngine implements Runnable _shuttle.openDoor(1); _shuttle.closeDoor(0); _shuttle.broadcastShuttleInfo(); - ThreadPoolManager.getInstance().scheduleGeneral(this, DELAY); + ThreadPoolManager.schedule(this, DELAY); break; } case 4: @@ -99,7 +99,7 @@ public class L2ShuttleEngine implements Runnable _shuttle.closeDoor(0); _shuttle.closeDoor(1); _shuttle.broadcastShuttleInfo(); - ThreadPoolManager.getInstance().scheduleGeneral(this, 1000); + ThreadPoolManager.schedule(this, 1000); break; } case 5: diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/skills/BuffInfo.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/skills/BuffInfo.java index f77eb25b5c..83cb08e95d 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/skills/BuffInfo.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/skills/BuffInfo.java @@ -291,7 +291,7 @@ public final class BuffInfo // Creates a task that will stop all the effects. if (_abnormalTime > 0) { - _scheduledFutureTimeTask = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new BuffTimeTask(this), 0, 1000L); + _scheduledFutureTimeTask = ThreadPoolManager.scheduleAtFixedRate(new BuffTimeTask(this), 0, 1000L); } // Reset abnormal visual effects. @@ -313,7 +313,7 @@ public final class BuffInfo { // The task for the effect ticks. final EffectTickTask effectTask = new EffectTickTask(this, effect); - final ScheduledFuture scheduledFuture = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(effectTask, effect.getTicks() * Config.EFFECT_TICK_RATIO, effect.getTicks() * Config.EFFECT_TICK_RATIO); + final ScheduledFuture scheduledFuture = ThreadPoolManager.scheduleAtFixedRate(effectTask, effect.getTicks() * Config.EFFECT_TICK_RATIO, effect.getTicks() * Config.EFFECT_TICK_RATIO); // Adds the task for ticking. addTask(effect, new EffectTaskInfo(effectTask, scheduledFuture)); } @@ -448,7 +448,7 @@ public final class BuffInfo { _scheduledFutureTimeTask.cancel(true); } - _scheduledFutureTimeTask = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new BuffTimeTask(this), 0, 1000L); + _scheduledFutureTimeTask = ThreadPoolManager.scheduleAtFixedRate(new BuffTimeTask(this), 0, 1000L); } } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java index ec30530b46..9780892efe 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -211,7 +211,7 @@ public class SkillCaster implements Runnable // Reschedule next task if we have such. if (hasNextPhase) { - _task = ThreadPoolManager.getInstance().scheduleEffect(this, nextTaskDelay); + _task = ThreadPoolManager.schedule(this, nextTaskDelay); } else { @@ -650,7 +650,7 @@ public class SkillCaster implements Runnable if (queuedSkill != null) { - ThreadPoolManager.getInstance().executeGeneral(() -> + ThreadPoolManager.execute(() -> { currPlayer.setQueuedSkill(null, null, false, false); currPlayer.useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/skills/SkillChannelizer.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/skills/SkillChannelizer.java index 47cf19adfa..3875eb6830 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/skills/SkillChannelizer.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/skills/SkillChannelizer.java @@ -78,7 +78,7 @@ public class SkillChannelizer implements Runnable // Start channeling. _skill = skill; - _task = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this, skill.getChannelingTickInitialDelay(), skill.getChannelingTickInterval()); + _task = ThreadPoolManager.scheduleAtFixedRate(this, skill.getChannelingTickInitialDelay(), skill.getChannelingTickInterval()); } public void stopChanneling() diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/votereward/VoteSystem.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/votereward/VoteSystem.java index ee96ba2285..dd4d99799e 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/votereward/VoteSystem.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/votereward/VoteSystem.java @@ -108,7 +108,7 @@ public abstract class VoteSystem implements Runnable this.rewards = rewards; this.checkMins = checkMins; - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this, checkMins * 1000 * 60, checkMins * 1000 * 60); + ThreadPoolManager.scheduleAtFixedRate(this, checkMins * 1000 * 60, checkMins * 1000 * 60); } protected void reward() diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2DamageZone.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2DamageZone.java index 4ba930be33..ab4c97288c 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2DamageZone.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2DamageZone.java @@ -121,7 +121,7 @@ public class L2DamageZone extends L2ZoneType { if (getSettings().getTask() == null) { - getSettings().setTask(ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new ApplyDamage(this), _startTask, _reuseTask)); + getSettings().setTask(ThreadPoolManager.scheduleAtFixedRate(new ApplyDamage(this), _startTask, _reuseTask)); } } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2EffectZone.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2EffectZone.java index 8faad5e583..53947b8169 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2EffectZone.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2EffectZone.java @@ -136,7 +136,7 @@ public final class L2EffectZone extends L2ZoneType { if (getSettings().getTask() == null) { - getSettings().setTask(ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new ApplySkill(), _initialDelay, _reuse)); + getSettings().setTask(ThreadPoolManager.scheduleAtFixedRate(new ApplySkill(), _initialDelay, _reuse)); } } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2FishingZone.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2FishingZone.java index d95e135c58..6814af7a3a 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2FishingZone.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2FishingZone.java @@ -47,7 +47,7 @@ public class L2FishingZone extends L2ZoneType if ((Config.ALLOW_FISHING || character.canOverrideCond(PcCondOverride.ZONE_CONDITIONS)) && !character.isInsideZone(ZoneId.FISHING)) { final WeakReference weakPlayer = new WeakReference<>(character.getActingPlayer()); - ThreadPoolManager.getInstance().executeGeneral(new Runnable() + ThreadPoolManager.execute(new Runnable() { @Override public void run() @@ -69,7 +69,7 @@ public class L2FishingZone extends L2ZoneType player.sendPacket(ExAutoFishAvailable.NO); } } - ThreadPoolManager.getInstance().scheduleGeneral(this, 1500); + ThreadPoolManager.schedule(this, 1500); } else { diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2JailZone.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2JailZone.java index 0b360f8bde..13e3744d6c 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2JailZone.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2JailZone.java @@ -77,7 +77,7 @@ public class L2JailZone extends L2ZoneType if (player.isJailed()) { // when a player wants to exit jail even if he is still jailed, teleport him back to jail - ThreadPoolManager.getInstance().scheduleGeneral(new TeleportTask(player, JAIL_IN_LOC), 2000); + ThreadPoolManager.schedule(new TeleportTask(player, JAIL_IN_LOC), 2000); character.sendMessage("You cannot cheat your way out of here. You must wait until your jail time is over."); } if (Config.JAIL_DISABLE_TRANSACTION) diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2OlympiadStadiumZone.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2OlympiadStadiumZone.java index 8209ddaf83..55f2f70d6b 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2OlympiadStadiumZone.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2OlympiadStadiumZone.java @@ -144,7 +144,7 @@ public class L2OlympiadStadiumZone extends L2ZoneRespawn // only participants, observers and GMs allowed if (!player.canOverrideCond(PcCondOverride.ZONE_CONDITIONS) && !player.isInOlympiadMode() && !player.inObserverMode()) { - ThreadPoolManager.getInstance().executeGeneral(new KickPlayer(player)); + ThreadPoolManager.execute(new KickPlayer(player)); } else { diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2ResidenceHallTeleportZone.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2ResidenceHallTeleportZone.java index 211ac52c18..063cd551e6 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2ResidenceHallTeleportZone.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2ResidenceHallTeleportZone.java @@ -62,7 +62,7 @@ public class L2ResidenceHallTeleportZone extends L2ResidenceTeleportZone { if ((_teleTask == null) || _teleTask.isDone()) { - _teleTask = ThreadPoolManager.getInstance().scheduleGeneral(new TeleportTask(), 30000); + _teleTask = ThreadPoolManager.schedule(new TeleportTask(), 30000); } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2SayuneZone.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2SayuneZone.java index f096d5eb89..0872062a68 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2SayuneZone.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/model/zone/type/L2SayuneZone.java @@ -59,7 +59,7 @@ public class L2SayuneZone extends L2ZoneType if (character.isPlayer() && (character.isInCategory(CategoryType.AWAKEN_GROUP) || Config.FREE_JUMPS_FOR_ALL) && !character.getActingPlayer().isMounted() && !character.isTransformed()) { character.setInsideZone(ZoneId.SAYUNE, true); - ThreadPoolManager.getInstance().executeGeneral(new FlyMoveStartTask(this, character.getActingPlayer())); + ThreadPoolManager.execute(new FlyMoveStartTask(this, character.getActingPlayer())); } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/network/L2GameClient.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/network/L2GameClient.java index b890cdc278..6bc536e28a 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/network/L2GameClient.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/network/L2GameClient.java @@ -113,7 +113,7 @@ public final class L2GameClient extends ChannelInboundHandler _crypt = new Crypt(this); if (Config.CHAR_DATA_STORE_INTERVAL > 0) { - _autoSaveInDB = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoSaveTask(), 300000L, Config.CHAR_DATA_STORE_INTERVAL); + _autoSaveInDB = ThreadPoolManager.scheduleAtFixedRate(new AutoSaveTask(), 300000L, Config.CHAR_DATA_STORE_INTERVAL); } else { @@ -146,7 +146,7 @@ public final class L2GameClient extends ChannelInboundHandler // no long running tasks here, do it async try { - ThreadPoolManager.getInstance().executeGeneral(new DisconnectTask()); + ThreadPoolManager.execute(new DisconnectTask()); } catch (RejectedExecutionException e) { @@ -652,7 +652,7 @@ public final class L2GameClient extends ChannelInboundHandler { cancelCleanup(); } - _cleanupTask = ThreadPoolManager.getInstance().scheduleGeneral(new CleanupTask(), 0); // instant + _cleanupTask = ThreadPoolManager.schedule(new CleanupTask(), 0); // instant } } @@ -802,7 +802,7 @@ public final class L2GameClient extends ChannelInboundHandler { if (_cleanupTask == null) { - _cleanupTask = ThreadPoolManager.getInstance().scheduleGeneral(new CleanupTask(), fast ? 5 : 15000L); + _cleanupTask = ThreadPoolManager.schedule(new CleanupTask(), fast ? 5 : 15000L); } } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index a807430d13..9edd6d2308 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -662,7 +662,7 @@ public class EnterWorld implements IClientIncomingPacket if (Config.HARDWARE_INFO_ENABLED) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { if (client.getHardwareInfo() == null) { diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/network/clientpackets/RequestPreviewItem.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/network/clientpackets/RequestPreviewItem.java index a6900f0102..c1db83f07e 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/network/clientpackets/RequestPreviewItem.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/network/clientpackets/RequestPreviewItem.java @@ -241,7 +241,7 @@ public final class RequestPreviewItem implements IClientIncomingPacket { activeChar.sendPacket(new ShopPreviewInfo(itemList)); // Schedule task - ThreadPoolManager.getInstance().scheduleGeneral(new RemoveWearItemsTask(activeChar), Config.WEAR_DELAY * 1000); + ThreadPoolManager.schedule(new RemoveWearItemsTask(activeChar), Config.WEAR_DELAY * 1000); } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index e7b3af4a35..6c7ebff02e 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -98,7 +98,7 @@ public final class RequestRestartPoint implements IClientIncomingPacket if ((activeChar.getClan() != null) && castle.getSiege().checkIsAttacker(activeChar.getClan())) { // Schedule respawn delay for attacker - ThreadPoolManager.getInstance().scheduleGeneral(new DeathTask(activeChar), castle.getSiege().getAttackerRespawnDelay()); + ThreadPoolManager.schedule(new DeathTask(activeChar), castle.getSiege().getAttackerRespawnDelay()); if (castle.getSiege().getAttackerRespawnDelay() > 0) { activeChar.sendMessage("You will be re-spawned in " + (castle.getSiege().getAttackerRespawnDelay() / 1000) + " seconds"); diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/network/clientpackets/UseItem.java index 7d80202cca..d6412dc382 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -246,7 +246,7 @@ public final class UseItem implements IClientIncomingPacket } else if (activeChar.isAttackingNow()) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { // If character is still engaged in strike we should not change weapon if (activeChar.isAttackingNow()) diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/taskmanager/AttackStanceTaskManager.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/taskmanager/AttackStanceTaskManager.java index 6e059c1112..9612f78257 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/taskmanager/AttackStanceTaskManager.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/taskmanager/AttackStanceTaskManager.java @@ -43,7 +43,7 @@ public class AttackStanceTaskManager */ protected AttackStanceTaskManager() { - ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new FightModeScheduler(), 0, 1000); + ThreadPoolManager.scheduleAtFixedRate(new FightModeScheduler(), 0, 1000); } /** diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/taskmanager/TaskManager.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/taskmanager/TaskManager.java index 44879f7839..5d9816577a 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/taskmanager/TaskManager.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/taskmanager/TaskManager.java @@ -223,31 +223,37 @@ public final class TaskManager private boolean launchTask(ExecutedTask task) { - final ThreadPoolManager scheduler = ThreadPoolManager.getInstance(); final TaskTypes type = task.getType(); long delay, interval; switch (type) { case TYPE_STARTUP: + { task.run(); return false; + } case TYPE_SHEDULED: + { delay = Long.valueOf(task.getParams()[0]); - task.scheduled = scheduler.scheduleGeneral(task, delay); + task.scheduled = ThreadPoolManager.schedule(task, delay); return true; + } case TYPE_FIXED_SHEDULED: + { delay = Long.valueOf(task.getParams()[0]); interval = Long.valueOf(task.getParams()[1]); - task.scheduled = scheduler.scheduleGeneralAtFixedRate(task, delay, interval); + task.scheduled = ThreadPoolManager.scheduleAtFixedRate(task, delay, interval); return true; + } case TYPE_TIME: + { try { final Date desired = DateFormat.getInstance().parse(task.getParams()[0]); final long diff = desired.getTime() - System.currentTimeMillis(); if (diff >= 0) { - task.scheduled = scheduler.scheduleGeneral(task, diff); + task.scheduled = ThreadPoolManager.schedule(task, diff); return true; } LOGGER.info("Task " + task.getId() + " is obsoleted."); @@ -256,7 +262,9 @@ public final class TaskManager { } break; + } case TYPE_SPECIAL: + { final ScheduledFuture result = task.getTask().launchSpecial(task); if (result != null) { @@ -264,7 +272,9 @@ public final class TaskManager return true; } break; + } case TYPE_GLOBAL_TASK: + { interval = Long.valueOf(task.getParams()[0]) * 86400000L; final String[] hour = task.getParams()[1].split(":"); @@ -296,10 +306,13 @@ public final class TaskManager { delay += interval; } - task.scheduled = scheduler.scheduleGeneralAtFixedRate(task, delay, interval); + task.scheduled = ThreadPoolManager.scheduleAtFixedRate(task, delay, interval); return true; + } default: + { return false; + } } return false; } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/util/Evolve.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/util/Evolve.java index c01bee7451..101903e150 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/util/Evolve.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/util/Evolve.java @@ -144,11 +144,11 @@ public final class Evolve petSummon.startFeed(); item.setEnchantLevel(petSummon.getLevel()); - ThreadPoolManager.getInstance().scheduleGeneral(new EvolveFinalizer(player, petSummon), 900); + ThreadPoolManager.schedule(new EvolveFinalizer(player, petSummon), 900); if (petSummon.getCurrentFed() <= 0) { - ThreadPoolManager.getInstance().scheduleGeneral(new EvolveFeedWait(player, petSummon), 60000); + ThreadPoolManager.schedule(new EvolveFeedWait(player, petSummon), 60000); } else { @@ -242,11 +242,11 @@ public final class Evolve final L2World world = L2World.getInstance(); world.removeObject(removedItem); - ThreadPoolManager.getInstance().scheduleGeneral(new EvolveFinalizer(player, petSummon), 900); + ThreadPoolManager.schedule(new EvolveFinalizer(player, petSummon), 900); if (petSummon.getCurrentFed() <= 0) { - ThreadPoolManager.getInstance().scheduleGeneral(new EvolveFeedWait(player, petSummon), 60000); + ThreadPoolManager.schedule(new EvolveFeedWait(player, petSummon), 60000); } else { diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/util/MinionList.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/util/MinionList.java index 10bebbe63e..22ba27c49f 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/util/MinionList.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/util/MinionList.java @@ -190,7 +190,7 @@ public class MinionList final int time = respawnTime < 0 ? _master.isRaid() ? (int) Config.RAID_MINION_RESPAWN_TIMER : 0 : respawnTime; if ((time > 0) && !_master.isAlikeDead()) { - ThreadPoolManager.getInstance().scheduleGeneral(new MinionRespawnTask(minion), time); + ThreadPoolManager.schedule(new MinionRespawnTask(minion), time); } } diff --git a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/util/Util.java b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/util/Util.java index 3795e02b4d..e551224ab8 100644 --- a/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/util/Util.java +++ b/L2J_Mobius_Classic/java/com/l2jmobius/gameserver/util/Util.java @@ -60,7 +60,7 @@ public final class Util public static void handleIllegalPlayerAction(L2PcInstance actor, String message, IllegalActionPunishmentType punishment) { - ThreadPoolManager.getInstance().scheduleGeneral(new IllegalPlayerActionTask(actor, message, punishment), 5000); + ThreadPoolManager.schedule(new IllegalPlayerActionTask(actor, message, punishment), 5000); } /** diff --git a/L2J_Mobius_Ertheia/dist/game/config/General.ini b/L2J_Mobius_Ertheia/dist/game/config/General.ini index c3845bcd46..5db867f344 100644 --- a/L2J_Mobius_Ertheia/dist/game/config/General.ini +++ b/L2J_Mobius_Ertheia/dist/game/config/General.ini @@ -132,33 +132,29 @@ SkillCheckGM = False # Thread Configuration # --------------------------------------------------------------------------- -# Extreme caution should be here, set to defaults if you do not know what you are doing. -# These could possibly hurt your servers performance or improve it depending on your server's configuration, size, and other factors. -# Default: 10 -ThreadPoolSizeEffects = 50 +# Determines the amount of scheduled thread pools. If set to -1, the server will decide the amount depending on the available processors. +Default: -1 +ScheduledThreadPoolCount = -1 -# Default: 13 -ThreadPoolSizeGeneral = 65 +# Specifies how many threads will be in a single scheduled pool. +Default: 4 +ThreadsPerScheduledThreadPool = 40 -# Default: 2 -ThreadPoolSizeEvents = 10 +# Determines the amount of instant thread pools. If set to -1, the server will decide the amount depending on the available processors. +Default: -1 +InstantThreadPoolCount = -1 + +# Specifies how many threads will be in a single instant pool. +Default: 2 +ThreadsPerInstantThreadPool = 20 # Default: 2 UrgentPacketThreadCoreSize = 20 -# Default: 4 -GeneralPacketThreadCoreSize = 20 -# Default: 4 -GeneralThreadCoreSize = 20 - -# Default: 6 -AiMaxThread = 30 - -# Default: 5 -EventsMaxThread = 25 - -# Dead Lock Detector (a separate thread for detecting deadlocks). +# --------------------------------------------------------------------------- +# Dead Lock Detector (separate thread for detecting deadlocks) +# --------------------------------------------------------------------------- # For improved crash logs and automatic restart in deadlock case if enabled. # Check interval is in seconds. # Default: True diff --git a/L2J_Mobius_Ertheia/dist/game/data/html/admin/serverinfo.htm b/L2J_Mobius_Ertheia/dist/game/data/html/admin/serverinfo.htm index cf06c95dc3..84dd350f5c 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/html/admin/serverinfo.htm +++ b/L2J_Mobius_Ertheia/dist/game/data/html/admin/serverinfo.htm @@ -8,7 +8,6 @@
-
General: @@ -76,30 +75,5 @@
%totalMem% MB
-
-Thread - General (STP): - %theardInfoGen% -
-Thread - Effects (STP): - %theardInfoEff% -
-Thread - AI (STP): - %theardInfoAi% -
-Thread - Event (STP): - %theardInfoEvent% -
-Thread - Packets (TP): - %theardInfoPack% -
-Thread - I/O Packets (TP): - %theardInfoIOPack% -
-Thread - General Tasks (TP): - %theardInfoGenTask% -
-Thread - Event Tasks (TP): - %theardInfoEvnTask% -
\ No newline at end of file diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/areas/DenOfDevil/DenOfEvil.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/areas/DenOfDevil/DenOfEvil.java index a8f49820ee..3619de52a6 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/areas/DenOfDevil/DenOfEvil.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/areas/DenOfDevil/DenOfEvil.java @@ -127,7 +127,7 @@ public final class DenOfEvil extends AbstractNpcAI zone.addSkill(skillId, skillLevel + 1); if (skillLevel == 3) // 3+1=4 { - ThreadPoolManager.getInstance().scheduleAi(new KashaDestruction(zone), 2 * 60 * 1000l); + ThreadPoolManager.schedule(new KashaDestruction(zone), 2 * 60 * 1000l); zone.broadcastPacket(SystemMessage.getSystemMessage(SystemMessageId.DEFEAT_KASHA_S_EYES_TO_LIFT_THE_GREAT_CURSE)); } else if (skillLevel == 2) @@ -140,7 +140,7 @@ public final class DenOfEvil extends AbstractNpcAI @Override public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) { - ThreadPoolManager.getInstance().scheduleAi(new RespawnNewEye(npc.getLocation()), 15000); + ThreadPoolManager.schedule(new RespawnNewEye(npc.getLocation()), 15000); final L2EffectZone zone = ZoneManager.getInstance().getZone(npc, L2EffectZone.class); if (zone == null) { @@ -213,7 +213,7 @@ public final class DenOfEvil extends AbstractNpcAI final L2Npc npc = (L2Npc) character; if (CommonUtil.contains(EYE_IDS, npc.getId())) { - ThreadPoolManager.getInstance().scheduleAi(new RespawnNewEye(npc.getLocation()), 15000); + ThreadPoolManager.schedule(new RespawnNewEye(npc.getLocation()), 15000); } } } diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/areas/FantasyIsle/Parade.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/areas/FantasyIsle/Parade.java index 666135ade5..e42870fd2d 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/areas/FantasyIsle/Parade.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/areas/FantasyIsle/Parade.java @@ -129,11 +129,11 @@ public final class Parade extends AbstractNpcAI { // Starts at 8:00 and repeats every 6 hours. final long diff = timeLeftMilli(8, 0, 0), cycle = 3600000L; - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Start(), diff, cycle); + ThreadPoolManager.scheduleAtFixedRate(new Start(), diff, cycle); // Test - Starts 3 minutes after server startup and repeats every 20 minutes. // final long diff = timeLeftMilli(8, 0, 0), cycle = 600000L; - // ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Start(), 180000L, cycle); + // ThreadPoolManager.scheduleAtFixedRate(new Start(), 180000L, cycle); _log.info("Fantasy Isle: Parade starting at " + new SimpleDateFormat("yyyy/MM/dd HH:mm").format(System.currentTimeMillis() + diff) + " and is scheduled each next " + (cycle / 3600000) + " hours."); } @@ -171,9 +171,9 @@ public final class Parade extends AbstractNpcAI public void run() { load(); - spawnTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Spawn(), 0, 5000); - deleteTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Delete(), 10000, 1000); - cleanTask = ThreadPoolManager.getInstance().scheduleGeneral(new Clean(), 420000); + spawnTask = ThreadPoolManager.scheduleAtFixedRate(new Spawn(), 0, 5000); + deleteTask = ThreadPoolManager.scheduleAtFixedRate(new Delete(), 10000, 1000); + cleanTask = ThreadPoolManager.schedule(new Clean(), 420000); } } diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/areas/ImperialTomb/FourSepulchers/FourSepulchers.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/areas/ImperialTomb/FourSepulchers/FourSepulchers.java index 81460f0f4d..d53bc8c351 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/areas/ImperialTomb/FourSepulchers/FourSepulchers.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/areas/ImperialTomb/FourSepulchers/FourSepulchers.java @@ -256,7 +256,7 @@ public final class FourSepulchers extends AbstractNpcAI implements IGameXmlReade if ((doorInfo[0] == sepulcherId) && (doorInfo[1] == currentWave)) { openDoor(doorInfo[2], 0); - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { closeDoor(doorInfo[2], 0); }, 15000); @@ -578,7 +578,7 @@ public final class FourSepulchers extends AbstractNpcAI implements IGameXmlReade showHtmlFile(player, npcId + "-OK.html", npc, null); // Kick all players when/if time is over - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { ZoneManager.getInstance().getZoneById(MANAGER_ZONES.get(npcId)).oustAllPlayers(); }, TIME_ATTACK * 60 * 1000); diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/areas/Rune/AltarOfSacrifice/AltarOfSacrifice.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/areas/Rune/AltarOfSacrifice/AltarOfSacrifice.java index cb37e1acbc..790799b0ad 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/areas/Rune/AltarOfSacrifice/AltarOfSacrifice.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/areas/Rune/AltarOfSacrifice/AltarOfSacrifice.java @@ -109,7 +109,7 @@ public class AltarOfSacrifice extends AbstractNpcAI private void sendMessage(L2Npc npc, NpcStringId npcString, int delay) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { if (npc != null) { diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/areas/TalkingIsland/AwakeningMaster/AwakeningMaster.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/areas/TalkingIsland/AwakeningMaster/AwakeningMaster.java index 4a6324cdfd..4149992c67 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/areas/TalkingIsland/AwakeningMaster/AwakeningMaster.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/areas/TalkingIsland/AwakeningMaster/AwakeningMaster.java @@ -349,7 +349,7 @@ public final class AwakeningMaster extends AbstractNpcAI player.sendSkillList(); } - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { player.sendPacket(ExShowUsm.AWAKENING_END); }, 10000); diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/areas/TalkingIsland/HarnakUndergroundRuinsZone/HarnakUndergroundRuinsZone.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/areas/TalkingIsland/HarnakUndergroundRuinsZone/HarnakUndergroundRuinsZone.java index 1078ee92a6..5b467277fa 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/areas/TalkingIsland/HarnakUndergroundRuinsZone/HarnakUndergroundRuinsZone.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/areas/TalkingIsland/HarnakUndergroundRuinsZone/HarnakUndergroundRuinsZone.java @@ -174,7 +174,7 @@ public class HarnakUndergroundRuinsZone extends AbstractNpcAI _templates.stream().forEach(t -> t.spawn(g -> String.valueOf(g.getName()).equalsIgnoreCase(zoneName.concat("_demonic")), null)); zone.getPlayersInside().forEach(temp -> temp.sendPacket(new ExSendUIEvent(temp, false, false, 600, 0, NpcStringId.DEMONIC_SYSTEM_ACTIVATED))); currentInfo.setZoneStage(7); - ThreadPoolManager.getInstance().scheduleGeneral(new changeZoneStage(zone), 600000); // 10min + ThreadPoolManager.schedule(new changeZoneStage(zone), 600000); // 10min } else { @@ -202,7 +202,7 @@ public class HarnakUndergroundRuinsZone extends AbstractNpcAI if (currentInfo.getZoneStage() < 6) { currentInfo.setZoneStage(currentInfo.getZoneStage() + 1); - ThreadPoolManager.getInstance().scheduleGeneral(new changeZoneStage(zone), 5000); + ThreadPoolManager.schedule(new changeZoneStage(zone), 5000); } } catch (Exception e) @@ -248,7 +248,7 @@ public class HarnakUndergroundRuinsZone extends AbstractNpcAI if (calcPoints >= 300) { calcPoints = 300; - ThreadPoolManager.getInstance().scheduleGeneral(new changeZoneStage(currentZone.getKey()), 1000); + ThreadPoolManager.schedule(new changeZoneStage(currentZone.getKey()), 1000); } currentInfo.setCurrentPoint(calcPoints); for (L2PcInstance player : currentZone.getKey().getPlayersInside()) diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/bosses/QueenAnt/QueenAnt.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/bosses/QueenAnt/QueenAnt.java index 65c2ebbf40..6c0a28cefe 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/bosses/QueenAnt/QueenAnt.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/bosses/QueenAnt/QueenAnt.java @@ -258,7 +258,7 @@ public final class QueenAnt extends AbstractNpcAI { ((L2MonsterInstance) npc).getMinionList().spawnMinions(npc.getParameters().getMinionList("Privates")); } - _task = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new QueenAntTask(), 5 * 1000, 5 * 1000); + _task = ThreadPoolManager.scheduleAtFixedRate(new QueenAntTask(), 5 * 1000, 5 * 1000); break; } } diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/others/EnergySeeds.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/others/EnergySeeds.java index ed7ca4eba8..55a016c369 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/others/EnergySeeds.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/others/EnergySeeds.java @@ -701,7 +701,7 @@ public final class EnergySeeds extends AbstractNpcAI public void scheduleRespawn(long waitTime) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { // if the AI is inactive, do not spawn the NPC if (isSeedActive(_seedId)) diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/others/NpcBuffers/NpcBufferAI.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/others/NpcBuffers/NpcBufferAI.java index 5728cca206..9cef571b2a 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/others/NpcBuffers/NpcBufferAI.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/others/NpcBuffers/NpcBufferAI.java @@ -90,6 +90,6 @@ public class NpcBufferAI implements Runnable _npc.doCast(skill); - ThreadPoolManager.getInstance().scheduleGeneral(this, skill.getReuseDelay()); + ThreadPoolManager.schedule(this, skill.getReuseDelay()); } } \ No newline at end of file diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/others/NpcBuffers/NpcBuffers.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/others/NpcBuffers/NpcBuffers.java index 148b7d78e3..faf003a11c 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/others/NpcBuffers/NpcBuffers.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/ai/others/NpcBuffers/NpcBuffers.java @@ -53,7 +53,7 @@ public final class NpcBuffers extends AbstractNpcAI final NpcBufferData data = _npcBuffers.getNpcBuffer(npc.getId()); for (NpcBufferSkillData skill : data.getSkills()) { - ThreadPoolManager.getInstance().scheduleAi(new NpcBufferAI(npc, skill), skill.getInitialDelay()); + ThreadPoolManager.schedule(new NpcBufferAI(npc, skill), skill.getInitialDelay()); } return super.onSpawn(npc); } diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/custom/events/Elpies/Elpies.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/custom/events/Elpies/Elpies.java index 93bb20bf3c..f8601fd797 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/custom/events/Elpies/Elpies.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/custom/events/Elpies/Elpies.java @@ -112,7 +112,7 @@ public final class Elpies extends Event Broadcast.toAllOnlinePlayers("Help us exterminate them!"); Broadcast.toAllOnlinePlayers("You have " + EVENT_DURATION_MINUTES + " minutes!"); - _eventTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _eventTask = ThreadPoolManager.schedule(() -> { Broadcast.toAllOnlinePlayers("Time is up!"); eventStop(); diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/custom/events/Race/Race.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/custom/events/Race/Race.java index d4f444d6c8..54832d23fd 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/custom/events/Race/Race.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/custom/events/Race/Race.java @@ -138,7 +138,7 @@ public final class Race extends Event Broadcast.toAllOnlinePlayers("Visit Event Manager in Dion village and signup, you have " + _time_register + " min before Race Start..."); // Schedule Event end - _eventTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> StartRace(), _time_register * 60 * 1000); + _eventTask = ThreadPoolManager.schedule(() -> StartRace(), _time_register * 60 * 1000); return true; @@ -181,7 +181,7 @@ public final class Race extends Event } } // Schedule timeup for Race - _eventTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> timeUp(), _time_race * 60 * 1000); + _eventTask = ThreadPoolManager.schedule(() -> timeUp(), _time_race * 60 * 1000); } @Override diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/MasterHandler.java index 9c497ac5aa..b5ff946dc4 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/MasterHandler.java @@ -307,7 +307,6 @@ import handlers.telnethandlers.server.ServerAbort; import handlers.telnethandlers.server.ServerRestart; import handlers.telnethandlers.server.ServerShutdown; import handlers.telnethandlers.server.Status; -import handlers.telnethandlers.server.ThreadPoolDebug; import handlers.usercommandhandlers.ChannelDelete; import handlers.usercommandhandlers.ChannelInfo; import handlers.usercommandhandlers.ChannelLeave; @@ -747,7 +746,6 @@ public class MasterHandler TelnetServer.getInstance().addHandler(new ServerRestart()); TelnetServer.getInstance().addHandler(new ServerShutdown()); TelnetServer.getInstance().addHandler(new Status()); - TelnetServer.getInstance().addHandler(new ThreadPoolDebug()); TelnetServer.getInstance().addHandler(new handlers.telnethandlers.server.Debug()); } diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/admincommandhandlers/AdminMonsterRace.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/admincommandhandlers/AdminMonsterRace.java index b9f123e18c..b986361b8c 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/admincommandhandlers/AdminMonsterRace.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/admincommandhandlers/AdminMonsterRace.java @@ -107,7 +107,7 @@ public class AdminMonsterRace implements IAdminCommandHandler activeChar.sendPacket(spk); activeChar.broadcastPacket(spk); - ThreadPoolManager.getInstance().scheduleGeneral(new RunRace(codes, activeChar), 5000); + ThreadPoolManager.schedule(new RunRace(codes, activeChar), 5000); } } @@ -137,7 +137,7 @@ public class AdminMonsterRace implements IAdminCommandHandler final MonRaceInfo spk = new MonRaceInfo(codes[2][0], codes[2][1], MonsterRace.getInstance().getMonsters(), MonsterRace.getInstance().getSpeeds()); activeChar.sendPacket(spk); activeChar.broadcastPacket(spk); - ThreadPoolManager.getInstance().scheduleGeneral(new RunEnd(activeChar), 30000); + ThreadPoolManager.schedule(new RunEnd(activeChar), 30000); } } diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/admincommandhandlers/AdminServerInfo.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/admincommandhandlers/AdminServerInfo.java index 12a2f312c2..6796381333 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/admincommandhandlers/AdminServerInfo.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/admincommandhandlers/AdminServerInfo.java @@ -20,14 +20,12 @@ import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Date; import java.util.HashSet; -import java.util.Map.Entry; import java.util.Set; import java.util.concurrent.TimeUnit; import com.l2jmobius.Config; import com.l2jmobius.gameserver.GameServer; import com.l2jmobius.gameserver.GameTimeController; -import com.l2jmobius.gameserver.ThreadPoolManager; import com.l2jmobius.gameserver.cache.HtmCache; import com.l2jmobius.gameserver.data.xml.impl.AdminData; import com.l2jmobius.gameserver.handler.IAdminCommandHandler; @@ -72,14 +70,6 @@ public class AdminServerInfo implements IAdminCommandHandler html.replace("%usedMem%", (RunTime.maxMemory() / mb) - (((RunTime.maxMemory() - RunTime.totalMemory()) + RunTime.freeMemory()) / mb)); html.replace("%freeMem%", ((RunTime.maxMemory() - RunTime.totalMemory()) + RunTime.freeMemory()) / mb); html.replace("%totalMem%", Runtime.getRuntime().maxMemory() / 1048576); - html.replace("%theardInfoGen%", buildTheardInfo("GENERAL")); - html.replace("%theardInfoEff%", buildTheardInfo("EFFECTS")); - html.replace("%theardInfoAi%", buildTheardInfo("AI")); - html.replace("%theardInfoEvent%", buildTheardInfo("EVENT")); - html.replace("%theardInfoPack%", buildTheardInfo("PACKETS")); - html.replace("%theardInfoIOPack%", buildTheardInfo("IOPACKETS")); - html.replace("%theardInfoGenTask%", buildTheardInfo("GENERAL_TASKS")); - html.replace("%theardInfoEvnTask%", buildTheardInfo("EVENT_TASKS")); activeChar.sendPacket(html); } return true; @@ -96,22 +86,6 @@ public class AdminServerInfo implements IAdminCommandHandler return days + " Days, " + hours + " Hours, " + TimeUnit.MILLISECONDS.toMinutes(time) + " Minutes"; } - private String buildTheardInfo(String category) - { - final StringBuilder tb = new StringBuilder(); - - tb.append(""); - for (Entry info : ThreadPoolManager.getInstance().getStats(category).getSet().entrySet()) - { - tb.append(""); - tb.append(""); - tb.append(""); - tb.append(""); - } - tb.append("
" + info.getKey() + ":" + info.getValue() + "
"); - return tb.toString(); - } - private int getPlayersCount(String type) { switch (type) diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/admincommandhandlers/AdminTest.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/admincommandhandlers/AdminTest.java index 3033172007..b64a8a1504 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/admincommandhandlers/AdminTest.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/admincommandhandlers/AdminTest.java @@ -46,7 +46,7 @@ public class AdminTest implements IAdminCommandHandler { if (command.equals("admin_stats")) { - for (String line : ThreadPoolManager.getInstance().getStats()) + for (String line : ThreadPoolManager.getStats()) { activeChar.sendMessage(line); } diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java index 84f3d3d721..bd3295b928 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java @@ -57,7 +57,7 @@ public class ClassChange extends AbstractEffect { final L2PcInstance player = effected.getActingPlayer(); // TODO: FIX ME - Executing 1 second later otherwise interupted exception during storeCharBase() - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { final int activeClass = player.getClassId().getId(); diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/effecthandlers/ServitorShare.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/effecthandlers/ServitorShare.java index 41b8a93749..02f29f0a1a 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/effecthandlers/ServitorShare.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/effecthandlers/ServitorShare.java @@ -67,7 +67,7 @@ public final class ServitorShare extends AbstractEffect if (effected != null) { - ThreadPoolManager.getInstance().scheduleEffect(new ScheduledEffectExitTask(effected, info.getSkill().getId()), 100); + ThreadPoolManager.schedule(new ScheduledEffectExitTask(effected, info.getSkill().getId()), 100); } } } diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/punishmenthandlers/JailHandler.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/punishmenthandlers/JailHandler.java index ad753cf33d..6618f26888 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/punishmenthandlers/JailHandler.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/punishmenthandlers/JailHandler.java @@ -162,7 +162,7 @@ public class JailHandler implements IPunishmentHandler OlympiadManager.getInstance().removeDisconnectedCompetitor(player); } - ThreadPoolManager.getInstance().scheduleGeneral(new TeleportTask(player, L2JailZone.getLocationIn()), 2000); + ThreadPoolManager.schedule(new TeleportTask(player, L2JailZone.getLocationIn()), 2000); // Open a Html message to inform the player final NpcHtmlMessage msg = new NpcHtmlMessage(); @@ -198,7 +198,7 @@ public class JailHandler implements IPunishmentHandler */ private static void removeFromPlayer(L2PcInstance player) { - ThreadPoolManager.getInstance().scheduleGeneral(new TeleportTask(player, L2JailZone.getLocationOut()), 2000); + ThreadPoolManager.schedule(new TeleportTask(player, L2JailZone.getLocationOut()), 2000); // Open a Html message to inform the player final NpcHtmlMessage msg = new NpcHtmlMessage(); diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/telnethandlers/server/Debug.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/telnethandlers/server/Debug.java index c58d8b8bc4..612ca5cdc7 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/telnethandlers/server/Debug.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/telnethandlers/server/Debug.java @@ -68,7 +68,7 @@ public class Debug implements ITelnetCommand @Override public String getUsage() { - return "Debug "; + return "Debug "; } @Override @@ -108,90 +108,6 @@ public class Debug implements ITelnetCommand player.sendPacket(sp); return "Packet has been sent!"; } - case "PacketTP": - { - final String str = ThreadPoolManager.getInstance().getPacketStats(); - int i = 0; - File f = new File("./log/StackTrace-PacketTP-" + i + ".txt"); - while (f.exists()) - { - i++; - f = new File("./log/StackTrace-PacketTP-" + i + ".txt"); - } - f.getParentFile().mkdirs(); - try - { - Files.write(f.toPath(), str.getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE); - } - catch (IOException e) - { - LOGGER.log(Level.WARNING, "Couldn't write packet tp.", e); - } - return str; - } - case "IOPacketTP": - { - final String str = ThreadPoolManager.getInstance().getIOPacketStats(); - int i = 0; - File f = new File("./log/StackTrace-IOPacketTP-" + i + ".txt"); - while (f.exists()) - { - i++; - f = new File("./log/StackTrace-IOPacketTP-" + i + ".txt"); - } - f.getParentFile().mkdirs(); - try - { - Files.write(f.toPath(), str.getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE); - } - catch (IOException e) - { - LOGGER.log(Level.WARNING, "Couldn't write packet tp.", e); - } - return str; - } - case "GeneralTP": - { - final String str = ThreadPoolManager.getInstance().getGeneralStats(); - int i = 0; - File f = new File("./log/StackTrace-GeneralTP-" + i + ".txt"); - while (f.exists()) - { - i++; - f = new File("./log/StackTrace-GeneralTP-" + i + ".txt"); - } - f.getParentFile().mkdirs(); - try - { - Files.write(f.toPath(), str.getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE); - } - catch (IOException e) - { - LOGGER.log(Level.WARNING, "Couldn't write packet tp.", e); - } - return str; - } - case "GeneralScheduledTP": - { - final String str = ThreadPoolManager.getInstance().getGeneralStats(); - int i = 0; - File f = new File("./log/StackTrace-GeneralScheduledTP-" + i + ".txt"); - while (f.exists()) - { - i++; - f = new File("./log/StackTrace-GeneralScheduledTP-" + i + ".txt"); - } - f.getParentFile().mkdirs(); - try - { - Files.write(f.toPath(), str.getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE); - } - catch (IOException e) - { - LOGGER.log(Level.WARNING, "Couldn't write packet tp.", e); - } - return str; - } case "full": { final Calendar cal = Calendar.getInstance(); @@ -283,7 +199,7 @@ public class Debug implements ITelnetCommand } sb.append("\r\n## Thread Pool Manager Statistics ##\r\n"); - for (String line : ThreadPoolManager.getInstance().getStats()) + for (String line : ThreadPoolManager.getStats()) { sb.append(line); sb.append("\r\n"); diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/telnethandlers/server/Performance.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/telnethandlers/server/Performance.java index 7c609ac673..4ca843967c 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/telnethandlers/server/Performance.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/telnethandlers/server/Performance.java @@ -42,9 +42,9 @@ public class Performance implements ITelnetCommand @Override public String handle(ChannelHandlerContext ctx, String[] args) { - ThreadPoolManager.getInstance().purge(); + // ThreadPoolManager.purge(); final StringBuilder sb = new StringBuilder(); - for (String line : ThreadPoolManager.getInstance().getStats()) + for (String line : ThreadPoolManager.getStats()) { sb.append(line + Config.EOL); } diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/telnethandlers/server/Purge.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/telnethandlers/server/Purge.java index 71f7c52abc..0ae4d70bdf 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/telnethandlers/server/Purge.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/telnethandlers/server/Purge.java @@ -42,9 +42,9 @@ public class Purge implements ITelnetCommand @Override public String handle(ChannelHandlerContext ctx, String[] args) { - ThreadPoolManager.getInstance().purge(); + ThreadPoolManager.purge(); final StringBuilder sb = new StringBuilder("STATUS OF THREAD POOLS AFTER PURGE COMMAND:" + Config.EOL); - for (String line : ThreadPoolManager.getInstance().getStats()) + for (String line : ThreadPoolManager.getStats()) { sb.append(line + Config.EOL); } diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/telnethandlers/server/ThreadPoolDebug.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/telnethandlers/server/ThreadPoolDebug.java deleted file mode 100644 index f984c7f2cb..0000000000 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/handlers/telnethandlers/server/ThreadPoolDebug.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.telnethandlers.server; - -import java.lang.reflect.Field; -import java.util.Comparator; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.FutureTask; -import java.util.concurrent.ScheduledThreadPoolExecutor; -import java.util.logging.Level; -import java.util.logging.Logger; - -import com.l2jmobius.Config; -import com.l2jmobius.gameserver.ThreadPoolManager; -import com.l2jmobius.gameserver.ThreadPoolManager.RunnableWrapper; -import com.l2jmobius.gameserver.network.telnet.ITelnetCommand; - -import io.netty.channel.ChannelHandlerContext; - -/** - * @author UnAfraid - */ -public class ThreadPoolDebug implements ITelnetCommand -{ - private static final Logger LOGGER = Logger.getLogger(ThreadPoolDebug.class.getName()); - - @Override - public String getCommand() - { - return "threadpooldebug"; - } - - @Override - public String getUsage() - { - return "threadpooldebug [effect, general, ai, events]"; - } - - @Override - public String handle(ChannelHandlerContext ctx, String[] args) - { - String pool = "_generalScheduledThreadPool"; - if (args.length > 0) - { - switch (args[0]) - { - case "effect": - { - pool = "_effectsScheduledThreadPool"; - break; - } - case "general": - { - pool = "_generalScheduledThreadPool"; - break; - } - case "ai": - { - pool = "_aiScheduledThreadPool"; - break; - } - case "events": - { - pool = "_eventScheduledThreadPool"; - break; - } - default: - { - return args[0] + " is not implemented!"; - } - } - } - final ScheduledThreadPoolExecutor executor = getObject(ThreadPoolManager.class, ThreadPoolManager.getInstance(), pool, ScheduledThreadPoolExecutor.class); - if (executor == null) - { - return "Couldn't retreive " + pool + "!"; - } - - Class adapterClass; - try - { - adapterClass = Class.forName("java.util.concurrent.Executors$RunnableAdapter"); - } - catch (Exception e) - { - return e.getMessage(); - } - - final Map tasks = new HashMap<>(); - for (Runnable run : executor.getQueue()) - { - try - { - if (run instanceof FutureTask) - { - final Object callableObject = getObject(FutureTask.class, run, "callable", Object.class); - final Object taskObject = getObject(adapterClass, callableObject, "task", Object.class); - - if (taskObject instanceof RunnableWrapper) - { - final Runnable task = getObject(RunnableWrapper.class, taskObject, "_r", Runnable.class); - final String name = task.getClass().getName(); - final int times = tasks.containsKey(name) ? tasks.get(name) : 0; - tasks.put(name, times + 1); - } - } - } - catch (Exception e) - { - e.printStackTrace(); - } - } - - final StringBuilder sb = new StringBuilder(); - sb.append(pool + " queue size: " + executor.getQueue().size() + Config.EOL); - - tasks.entrySet().stream().sorted(Comparator.comparingInt(Entry::getValue)).forEach(entry -> sb.append("Class: " + entry.getKey() + " = " + entry.getValue() + Config.EOL)); - - return sb.toString(); - } - - private static T getObject(Class sourceClass, Object sourceInstance, String fieldName, Class targetClass) - { - try - { - final Field field = sourceClass.getDeclaredField(fieldName); - - // Mark down if field was accessible - final boolean isAccessible = field.isAccessible(); - - // Enforce accessible to retrieve the object associated with this field - if (!isAccessible) - { - field.setAccessible(true); - } - - // Get the object - final Object fieldObject = field.get(sourceInstance); - - // Restore the original accessible state. - field.setAccessible(isAccessible); - - // Make sure the object is the one we expect to be - if (targetClass.isInstance(fieldObject)) - { - return targetClass.cast(fieldObject); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Error while retrieving object of " + sourceInstance.getClass().getName() + "." + fieldName, e); - } - return null; - } -} diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/instances/CastleDungeon/CastleDungeon.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/instances/CastleDungeon/CastleDungeon.java index f6606acc88..4baa7c3145 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/instances/CastleDungeon/CastleDungeon.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/instances/CastleDungeon/CastleDungeon.java @@ -22,7 +22,6 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; import com.l2jmobius.commons.util.CommonUtil; import com.l2jmobius.gameserver.ThreadPoolManager; @@ -203,7 +202,7 @@ public final class CastleDungeon extends AbstractInstance */ private void spawnRaid(Instance instance) { - final ScheduledFuture spawnTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> + final ScheduledFuture spawnTask = ThreadPoolManager.schedule(() -> { // Get template id of raid final int npcId; @@ -230,7 +229,7 @@ public final class CastleDungeon extends AbstractInstance // Unset spawn task reference instance.setParameter("spawnTask", null); - }, 2, TimeUnit.MINUTES); + }, 2 * 60 * 1000); // 2 minutes // Save timer to instance world instance.setParameter("spawnTask", spawnTask); diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/instances/ChambersOfDelusion/ChamberOfDelusion.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/instances/ChambersOfDelusion/ChamberOfDelusion.java index dd710244f9..2f9e28fa07 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/instances/ChambersOfDelusion/ChamberOfDelusion.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/instances/ChambersOfDelusion/ChamberOfDelusion.java @@ -111,7 +111,7 @@ public final class ChamberOfDelusion extends AbstractInstance changeRoom(instance); // Start banish task - final ScheduledFuture banishTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(() -> + final ScheduledFuture banishTask = ThreadPoolManager.scheduleAtFixedRate(() -> { if (instance.getRemainingTime() < 60000) { @@ -410,7 +410,7 @@ public final class ChamberOfDelusion extends AbstractInstance final long nextInterval = (bossRoom) ? 60000L : (ROOM_CHANGE_INTERVAL + getRandom(ROOM_CHANGE_RANDOM_TIME)) * 1000L; if (world.getRemainingTime() > nextInterval) { - final ScheduledFuture roomChangeTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> + final ScheduledFuture roomChangeTask = ThreadPoolManager.schedule(() -> { try { diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/instances/FortressDungeon/FortressDungeon.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/instances/FortressDungeon/FortressDungeon.java index ee2492b568..31def525c1 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/instances/FortressDungeon/FortressDungeon.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/instances/FortressDungeon/FortressDungeon.java @@ -22,7 +22,6 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; import com.l2jmobius.commons.util.CommonUtil; import com.l2jmobius.gameserver.ThreadPoolManager; @@ -226,7 +225,7 @@ public final class FortressDungeon extends AbstractInstance */ private void spawnRaid(Instance instance) { - final ScheduledFuture spawnTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> + final ScheduledFuture spawnTask = ThreadPoolManager.schedule(() -> { // Get template id of raid final int npcId; @@ -247,7 +246,7 @@ public final class FortressDungeon extends AbstractInstance // Unset spawn task reference instance.setParameter("spawnTask", null); - }, 2, TimeUnit.MINUTES); + }, 2 * 60 * 1000); // 2 minutes // Save timer to instance world instance.setParameter("spawnTask", spawnTask); diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/quests/Q10292_SevenSignsGirlOfDoubt/Q10292_SevenSignsGirlOfDoubt.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/quests/Q10292_SevenSignsGirlOfDoubt/Q10292_SevenSignsGirlOfDoubt.java index 3f089b1640..bfc2a993c2 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/quests/Q10292_SevenSignsGirlOfDoubt/Q10292_SevenSignsGirlOfDoubt.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/quests/Q10292_SevenSignsGirlOfDoubt/Q10292_SevenSignsGirlOfDoubt.java @@ -168,7 +168,7 @@ public final class Q10292_SevenSignsGirlOfDoubt extends Quest creature1.setRandomWalking(true); final L2Npc creature2 = addSpawn(CREATURE_OF_THE_DUSK2, 89524, -238131, -9632, 56, false, 0, false, player.getInstanceId()); creature2.setRandomWalking(true); - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { creature1.deleteMe(); creature2.deleteMe(); diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/vehicles/AirShipController.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/vehicles/AirShipController.java index b87a53cbb1..bd5264cfe0 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/vehicles/AirShipController.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/vehicles/AirShipController.java @@ -291,11 +291,11 @@ public abstract class AirShipController extends AbstractNpcAI playMovie(_dockedShip.getPassengers(), _movie); } - ThreadPoolManager.getInstance().scheduleGeneral(_decayTask, 1000); + ThreadPoolManager.schedule(_decayTask, 1000); } else { - _departSchedule = ThreadPoolManager.getInstance().scheduleGeneral(_departTask, DEPART_INTERVAL); + _departSchedule = ThreadPoolManager.schedule(_departTask, DEPART_INTERVAL); } } } diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/vehicles/AirShipGludioGracia/AirShipGludioGracia.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/vehicles/AirShipGludioGracia/AirShipGludioGracia.java index 72d293c6ba..1246d1204e 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/vehicles/AirShipGludioGracia/AirShipGludioGracia.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/vehicles/AirShipGludioGracia/AirShipGludioGracia.java @@ -248,7 +248,7 @@ public final class AirShipGludioGracia extends AbstractNpcAI implements Runnable case 1: // _ship.teleToLocation(-167874, 256731, -509, 41035, false); _ship.setOustLoc(OUST_GRACIA); - ThreadPoolManager.getInstance().scheduleGeneral(this, 5000); + ThreadPoolManager.schedule(this, 5000); break; case 2: _ship.executePath(WARPGATE_TO_GRACIA); @@ -257,7 +257,7 @@ public final class AirShipGludioGracia extends AbstractNpcAI implements Runnable broadcastInGracia(NpcStringId.THE_REGULARLY_SCHEDULED_AIRSHIP_HAS_ARRIVED_IT_WILL_DEPART_FOR_THE_ADEN_CONTINENT_IN_1_MINUTE); _ship.setInDock(GRACIA_DOCK_ID); _ship.oustPlayers(); - ThreadPoolManager.getInstance().scheduleGeneral(this, 60000); + ThreadPoolManager.schedule(this, 60000); break; case 4: broadcastInGracia(NpcStringId.THE_REGULARLY_SCHEDULED_AIRSHIP_THAT_FLIES_TO_THE_ADEN_CONTINENT_HAS_DEPARTED); @@ -267,7 +267,7 @@ public final class AirShipGludioGracia extends AbstractNpcAI implements Runnable case 5: // _ship.teleToLocation(-157261, 255664, 221, 64781, false); _ship.setOustLoc(OUST_GLUDIO); - ThreadPoolManager.getInstance().scheduleGeneral(this, 5000); + ThreadPoolManager.schedule(this, 5000); break; case 6: _ship.executePath(WARPGATE_TO_GLUDIO); @@ -276,7 +276,7 @@ public final class AirShipGludioGracia extends AbstractNpcAI implements Runnable broadcastInGludio(NpcStringId.THE_REGULARLY_SCHEDULED_AIRSHIP_HAS_ARRIVED_IT_WILL_DEPART_FOR_THE_GRACIA_CONTINENT_IN_1_MINUTE); _ship.setInDock(GLUDIO_DOCK_ID); _ship.oustPlayers(); - ThreadPoolManager.getInstance().scheduleGeneral(this, 60000); + ThreadPoolManager.schedule(this, 60000); break; } _cycle++; diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/vehicles/BoatGludinRune.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/vehicles/BoatGludinRune.java index 35a160a405..746b80fafd 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/vehicles/BoatGludinRune.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/vehicles/BoatGludinRune.java @@ -175,15 +175,15 @@ public class BoatGludinRune implements Runnable { case 0: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], LEAVE_GLUDIN5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 1: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], LEAVE_GLUDIN1); - ThreadPoolManager.getInstance().scheduleGeneral(this, 40000); + ThreadPoolManager.schedule(this, 40000); break; case 2: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], LEAVE_GLUDIN0); - ThreadPoolManager.getInstance().scheduleGeneral(this, 20000); + ThreadPoolManager.schedule(this, 20000); break; case 3: BoatManager.getInstance().dockShip(BoatManager.GLUDIN_HARBOR, false); @@ -191,19 +191,19 @@ public class BoatGludinRune implements Runnable _boat.broadcastPacket(GLUDIN_SOUND); _boat.payForRide(7905, 1, -90015, 150422, -3610); _boat.executePath(GLUDIN_TO_RUNE); - ThreadPoolManager.getInstance().scheduleGeneral(this, 250000); + ThreadPoolManager.schedule(this, 250000); break; case 4: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], ARRIVAL_RUNE15); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 5: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], ARRIVAL_RUNE10); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 6: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], ARRIVAL_RUNE5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 7: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], ARRIVAL_RUNE1); @@ -222,7 +222,7 @@ public class BoatGludinRune implements Runnable _shoutCount = 0; } - ThreadPoolManager.getInstance().scheduleGeneral(this, 5000); + ThreadPoolManager.schedule(this, 5000); return; } _boat.executePath(RUNE_DOCK); @@ -231,19 +231,19 @@ public class BoatGludinRune implements Runnable BoatManager.getInstance().dockShip(BoatManager.RUNE_HARBOR, true); BoatManager.getInstance().broadcastPackets(RUNE_DOCK[0], GLUDIN_DOCK[0], ARRIVED_AT_RUNE, ARRIVED_AT_RUNE_2); _boat.broadcastPacket(RUNE_SOUND); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 10: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], LEAVE_RUNE5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 11: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], LEAVE_RUNE1); - ThreadPoolManager.getInstance().scheduleGeneral(this, 40000); + ThreadPoolManager.schedule(this, 40000); break; case 12: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], LEAVE_RUNE0); - ThreadPoolManager.getInstance().scheduleGeneral(this, 20000); + ThreadPoolManager.schedule(this, 20000); break; case 13: BoatManager.getInstance().dockShip(BoatManager.RUNE_HARBOR, false); @@ -251,19 +251,19 @@ public class BoatGludinRune implements Runnable _boat.broadcastPacket(RUNE_SOUND); _boat.payForRide(7904, 1, 34513, -38009, -3640); _boat.executePath(RUNE_TO_GLUDIN); - ThreadPoolManager.getInstance().scheduleGeneral(this, 60000); + ThreadPoolManager.schedule(this, 60000); break; case 14: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], ARRIVAL_GLUDIN15); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 15: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], ARRIVAL_GLUDIN10); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 16: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], ARRIVAL_GLUDIN5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 17: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], ARRIVAL_GLUDIN1); @@ -282,7 +282,7 @@ public class BoatGludinRune implements Runnable _shoutCount = 0; } - ThreadPoolManager.getInstance().scheduleGeneral(this, 5000); + ThreadPoolManager.schedule(this, 5000); return; } _boat.executePath(GLUDIN_DOCK); @@ -291,7 +291,7 @@ public class BoatGludinRune implements Runnable BoatManager.getInstance().dockShip(BoatManager.GLUDIN_HARBOR, true); BoatManager.getInstance().broadcastPackets(GLUDIN_DOCK[0], RUNE_DOCK[0], ARRIVED_AT_GLUDIN, ARRIVED_AT_GLUDIN_2); _boat.broadcastPacket(GLUDIN_SOUND); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; } _shoutCount = 0; diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/vehicles/BoatInnadrilTour.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/vehicles/BoatInnadrilTour.java index d7a909f26b..0c6be76018 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/vehicles/BoatInnadrilTour.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/vehicles/BoatInnadrilTour.java @@ -118,44 +118,44 @@ public class BoatInnadrilTour implements Runnable { case 0: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, LEAVE_INNADRIL5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 1: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, LEAVE_INNADRIL1); - ThreadPoolManager.getInstance().scheduleGeneral(this, 40000); + ThreadPoolManager.schedule(this, 40000); break; case 2: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, LEAVE_INNADRIL0); - ThreadPoolManager.getInstance().scheduleGeneral(this, 20000); + ThreadPoolManager.schedule(this, 20000); break; case 3: BoatManager.getInstance().broadcastPackets(DOCK, DOCK, LEAVING_INNADRIL, INNADRIL_SOUND); _boat.payForRide(0, 1, 107092, 219098, -3952); _boat.executePath(TOUR); - ThreadPoolManager.getInstance().scheduleGeneral(this, 650000); + ThreadPoolManager.schedule(this, 650000); break; case 4: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, ARRIVAL20); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 5: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, ARRIVAL15); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 6: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, ARRIVAL10); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 7: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, ARRIVAL5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 8: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, ARRIVAL1); break; case 9: BoatManager.getInstance().broadcastPackets(DOCK, DOCK, ARRIVED_AT_INNADRIL, INNADRIL_SOUND); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; } _cycle++; diff --git a/L2J_Mobius_Ertheia/dist/game/data/scripts/vehicles/BoatRunePrimeval.java b/L2J_Mobius_Ertheia/dist/game/data/scripts/vehicles/BoatRunePrimeval.java index 6de5286c16..7359b6bdec 100644 --- a/L2J_Mobius_Ertheia/dist/game/data/scripts/vehicles/BoatRunePrimeval.java +++ b/L2J_Mobius_Ertheia/dist/game/data/scripts/vehicles/BoatRunePrimeval.java @@ -117,7 +117,7 @@ public class BoatRunePrimeval implements Runnable break; case 1: BoatManager.getInstance().broadcastPackets(PRIMEVAL_DOCK, RUNE_DOCK[0], ARRIVED_AT_PRIMEVAL, ARRIVED_AT_PRIMEVAL_2, PRIMEVAL_SOUND); - ThreadPoolManager.getInstance().scheduleGeneral(this, 180000); + ThreadPoolManager.schedule(this, 180000); break; case 2: BoatManager.getInstance().broadcastPackets(PRIMEVAL_DOCK, RUNE_DOCK[0], LEAVING_PRIMEVAL, PRIMEVAL_SOUND); @@ -138,7 +138,7 @@ public class BoatRunePrimeval implements Runnable _shoutCount = 0; } - ThreadPoolManager.getInstance().scheduleGeneral(this, 5000); + ThreadPoolManager.schedule(this, 5000); return; } _boat.executePath(RUNE_DOCK); @@ -146,7 +146,7 @@ public class BoatRunePrimeval implements Runnable case 4: BoatManager.getInstance().dockShip(BoatManager.RUNE_HARBOR, true); BoatManager.getInstance().broadcastPackets(RUNE_DOCK[0], PRIMEVAL_DOCK, ARRIVED_AT_RUNE, ARRIVED_AT_RUNE_2, RUNE_SOUND); - ThreadPoolManager.getInstance().scheduleGeneral(this, 180000); + ThreadPoolManager.schedule(this, 180000); break; } _shoutCount = 0; diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/Config.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/Config.java index b8488e105c..50cba0c8b3 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/Config.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/Config.java @@ -425,14 +425,11 @@ public final class Config public static boolean ALT_DEV_NO_SPAWNS; public static boolean ALT_DEV_SHOW_QUESTS_LOAD_IN_LOGS; public static boolean ALT_DEV_SHOW_SCRIPTS_LOAD_IN_LOGS; - public static int THREAD_P_EFFECTS; - public static int THREAD_P_GENERAL; - public static int THREAD_E_EVENTS; - public static int GENERAL_PACKET_THREAD_CORE_SIZE; + public static int SCHEDULED_THREAD_POOL_COUNT; + public static int THREADS_PER_SCHEDULED_THREAD_POOL; + public static int INSTANT_THREAD_POOL_COUNT; + public static int THREADS_PER_INSTANT_THREAD_POOL; public static int IO_PACKET_THREAD_CORE_SIZE; - public static int GENERAL_THREAD_CORE_SIZE; - public static int AI_MAX_THREAD; - public static int EVENT_MAX_THREAD; public static boolean DEADLOCK_DETECTOR; public static int DEADLOCK_CHECK_INTERVAL; public static boolean RESTART_ON_DEADLOCK; @@ -1703,14 +1700,11 @@ public final class Config ALT_DEV_NO_SPAWNS = General.getBoolean("AltDevNoSpawns", false) || Boolean.getBoolean("nospawns"); ALT_DEV_SHOW_QUESTS_LOAD_IN_LOGS = General.getBoolean("AltDevShowQuestsLoadInLogs", false); ALT_DEV_SHOW_SCRIPTS_LOAD_IN_LOGS = General.getBoolean("AltDevShowScriptsLoadInLogs", false); - THREAD_P_EFFECTS = General.getInt("ThreadPoolSizeEffects", 10); - THREAD_P_GENERAL = General.getInt("ThreadPoolSizeGeneral", 13); - THREAD_E_EVENTS = General.getInt("ThreadPoolSizeEvents", 2); + SCHEDULED_THREAD_POOL_COUNT = General.getInt("ScheduledThreadPoolCount", -1); + THREADS_PER_SCHEDULED_THREAD_POOL = General.getInt("ThreadsPerScheduledThreadPool", 4); + INSTANT_THREAD_POOL_COUNT = General.getInt("InstantThreadPoolCount", -1); + THREADS_PER_INSTANT_THREAD_POOL = General.getInt("ThreadsPerInstantThreadPool", 2); IO_PACKET_THREAD_CORE_SIZE = General.getInt("UrgentPacketThreadCoreSize", 2); - GENERAL_PACKET_THREAD_CORE_SIZE = General.getInt("GeneralPacketThreadCoreSize", 4); - GENERAL_THREAD_CORE_SIZE = General.getInt("GeneralThreadCoreSize", 4); - AI_MAX_THREAD = General.getInt("AiMaxThread", 6); - EVENT_MAX_THREAD = General.getInt("EventsMaxThread", 5); DEADLOCK_DETECTOR = General.getBoolean("DeadLockDetector", true); DEADLOCK_CHECK_INTERVAL = General.getInt("DeadLockCheckInterval", 20); RESTART_ON_DEADLOCK = General.getBoolean("RestartOnDeadlock", false); diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/GameServer.java index 4917d6f15a..ebe25ecb9d 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/GameServer.java @@ -173,13 +173,15 @@ public class GameServer { final long serverLoadStart = System.currentTimeMillis(); + printSection("IdFactory"); if (!IdFactory.getInstance().isInitialized()) { LOGGER.severe(getClass().getSimpleName() + ": Could not read object IDs from database. Please check your configuration."); throw new Exception("Could not initialize the ID factory"); } - ThreadPoolManager.getInstance(); + printSection("ThreadPool"); + ThreadPoolManager.init(); EventDispatcher.getInstance(); // load script engines diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ItemsAutoDestroy.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ItemsAutoDestroy.java index c2a3271697..777bcbbd43 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ItemsAutoDestroy.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ItemsAutoDestroy.java @@ -31,7 +31,7 @@ public final class ItemsAutoDestroy protected ItemsAutoDestroy() { - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this::removeItems, 5000, 5000); + ThreadPoolManager.scheduleAtFixedRate(this::removeItems, 5000, 5000); } public static ItemsAutoDestroy getInstance() diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/RecipeController.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/RecipeController.java index 05e4b8586c..a84a29cd81 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/RecipeController.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/RecipeController.java @@ -109,7 +109,7 @@ public class RecipeController if (Config.ALT_GAME_CREATION) { _activeMakers.put(manufacturer.getObjectId(), maker); - ThreadPoolManager.getInstance().scheduleGeneral(maker, 100); + ThreadPoolManager.schedule(maker, 100); } else { @@ -158,7 +158,7 @@ public class RecipeController if (Config.ALT_GAME_CREATION) { _activeMakers.put(player.getObjectId(), maker); - ThreadPoolManager.getInstance().scheduleGeneral(maker, 100); + ThreadPoolManager.schedule(maker, 100); } else { @@ -354,7 +354,7 @@ public class RecipeController _player.broadcastPacket(msk); _player.sendPacket(new SetupGauge(_player.getObjectId(), 0, _delay)); - ThreadPoolManager.getInstance().scheduleGeneral(this, 100 + _delay); + ThreadPoolManager.schedule(this, 100 + _delay); } else { @@ -548,7 +548,7 @@ public class RecipeController if (Config.ALT_GAME_CREATION && isWait) { _player.sendPacket(new SetupGauge(_player.getObjectId(), 0, _delay)); - ThreadPoolManager.getInstance().scheduleGeneral(this, 100 + _delay); + ThreadPoolManager.schedule(this, 100 + _delay); } else { @@ -570,7 +570,7 @@ public class RecipeController if (Config.ALT_GAME_CREATION && isWait) { _player.sendPacket(new SetupGauge(_player.getObjectId(), 0, _delay)); - ThreadPoolManager.getInstance().scheduleGeneral(this, 100 + _delay); + ThreadPoolManager.schedule(this, 100 + _delay); } else { diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/Shutdown.java index 81dc2f141a..369510db24 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/Shutdown.java @@ -215,7 +215,7 @@ public class Shutdown extends Thread // stop all thread pools try { - ThreadPoolManager.getInstance().shutdown(); + ThreadPoolManager.shutdown(); LOGGER.info("Thread Pool Manager: Manager has been shut down(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); } catch (Throwable t) diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ThreadPoolManager.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ThreadPoolManager.java index 7e4beb26eb..5d85cdee27 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ThreadPoolManager.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ThreadPoolManager.java @@ -16,803 +16,284 @@ */ package com.l2jmobius.gameserver; -import java.lang.Thread.UncaughtExceptionHandler; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.RejectedExecutionException; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledThreadPoolExecutor; -import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.logging.Level; import java.util.logging.Logger; import com.l2jmobius.Config; -import com.l2jmobius.gameserver.model.StatsSet; /** + * This class handles thread pooling system. It relies on two ThreadPoolExecutor arrays, which poolers number is generated using config. *

- * This class is made to handle all the ThreadPools used in L2J. + * Those arrays hold following pools : *

- *

- * Scheduled Tasks can either be sent to a {@link #_generalScheduledThreadPool "general"} or {@link #_effectsScheduledThreadPool "effects"} {@link ScheduledThreadPoolExecutor ScheduledThreadPool}: The "effects" one is used for every effects (skills, hp/mp regen ...) while the "general" one is used - * for everything else that needs to be scheduled.
- * There also is an {@link #_aiScheduledThreadPool "ai"} {@link ScheduledThreadPoolExecutor ScheduledThreadPool} used for AI Tasks. - *

- *

- * Tasks can be sent to {@link ScheduledThreadPoolExecutor ScheduledThreadPool} either with: *

    - *
  • {@link #scheduleEffect(Runnable, long, TimeUnit)} and {@link #scheduleEffect(Runnable, long)} : for effects Tasks that needs to be executed only once.
  • - *
  • {@link #scheduleGeneral(Runnable, long, TimeUnit)} and {@link #scheduleGeneral(Runnable, long)} : for scheduled Tasks that needs to be executed once.
  • - *
  • {@link #scheduleAi(Runnable, long, TimeUnit)} and {@link #scheduleAi(Runnable, long)} : for AI Tasks that needs to be executed once
  • + *
  • Scheduled pool keeps a track about incoming, future events.
  • + *
  • Instant pool handles short-life events.
  • *
- * or - *
    - *
  • {@link #scheduleEffectAtFixedRate(Runnable, long, long, TimeUnit)} and {@link #scheduleEffectAtFixedRate(Runnable, long, long)} : for effects Tasks that needs to be executed periodicaly.
  • - *
  • {@link #scheduleGeneralAtFixedRate(Runnable, long, long, TimeUnit)} and {@link #scheduleGeneralAtFixedRate(Runnable, long, long)} : for scheduled Tasks that needs to be executed periodicaly.
  • - *
  • {@link #scheduleAiAtFixedRate(Runnable, long, long, TimeUnit)} and {@link #scheduleAiAtFixedRate(Runnable, long, long)} : for AI Tasks that needs to be executed periodicaly
  • - *
- *

- *

- * For all Tasks that should be executed with no delay asynchronously in a ThreadPool there also are usual {@link ThreadPoolExecutor ThreadPools} that can grow/shrink according to their load.: - *

    - *
  • {@link #_generalPacketsThreadPool GeneralPackets} where most packets handler are executed.
  • - *
  • {@link #_ioPacketsThreadPool I/O Packets} where all the i/o packets are executed.
  • - *
  • There will be an AI ThreadPool where AI events should be executed
  • - *
  • A general ThreadPool where everything else that needs to run asynchronously with no delay should be executed updates, SQL updates/inserts...)?
  • - *
- *

- * @author -Wooden- */ -public class ThreadPoolManager +public final class ThreadPoolManager { - private static final Logger LOGGER = Logger.getLogger(ThreadPoolManager.class.getName()); + protected static final Logger LOG = Logger.getLogger(ThreadPoolManager.class.getName()); - public static final class RunnableWrapper implements Runnable + private static final long MAX_DELAY = TimeUnit.NANOSECONDS.toMillis(Long.MAX_VALUE - System.nanoTime()) / 2; + + private static int _threadPoolRandomizer; + + protected static ScheduledThreadPoolExecutor[] _scheduledPools; + protected static ThreadPoolExecutor[] _instantPools; + + /** + * Init the different pools, based on Config. It is launched only once, on Gameserver instance. + */ + public static void init() { - private final Runnable _r; - - public RunnableWrapper(Runnable r) + // Feed scheduled pool. + int poolCount = Config.SCHEDULED_THREAD_POOL_COUNT; + if (poolCount == -1) { - _r = r; + poolCount = Runtime.getRuntime().availableProcessors(); } - @Override - public final void run() + _scheduledPools = new ScheduledThreadPoolExecutor[poolCount]; + for (int i = 0; i < poolCount; i++) { - try - { - _r.run(); - } - catch (Throwable e) - { - final Thread t = Thread.currentThread(); - final UncaughtExceptionHandler h = t.getUncaughtExceptionHandler(); - if (h != null) - { - h.uncaughtException(t, e); - } - } + _scheduledPools[i] = new ScheduledThreadPoolExecutor(Config.THREADS_PER_SCHEDULED_THREAD_POOL); } - } - - protected ScheduledThreadPoolExecutor _effectsScheduledThreadPool; - protected ScheduledThreadPoolExecutor _generalScheduledThreadPool; - protected ScheduledThreadPoolExecutor _aiScheduledThreadPool; - protected ScheduledThreadPoolExecutor _eventScheduledThreadPool; - private final ThreadPoolExecutor _generalPacketsThreadPool; - private final ThreadPoolExecutor _ioPacketsThreadPool; - private final ThreadPoolExecutor _generalThreadPool; - private final ThreadPoolExecutor _eventThreadPool; - - private boolean _shutdown; - - public static ThreadPoolManager getInstance() - { - return SingletonHolder._instance; - } - - protected ThreadPoolManager() - { - _effectsScheduledThreadPool = new ScheduledThreadPoolExecutor(Config.THREAD_P_EFFECTS, new PriorityThreadFactory("EffectsSTPool", Thread.NORM_PRIORITY)); - _generalScheduledThreadPool = new ScheduledThreadPoolExecutor(Config.THREAD_P_GENERAL, new PriorityThreadFactory("GeneralSTPool", Thread.NORM_PRIORITY)); - _eventScheduledThreadPool = new ScheduledThreadPoolExecutor(Config.THREAD_E_EVENTS, new PriorityThreadFactory("EventSTPool", Thread.NORM_PRIORITY)); - _ioPacketsThreadPool = new ThreadPoolExecutor(Config.IO_PACKET_THREAD_CORE_SIZE, Integer.MAX_VALUE, 5L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(), new PriorityThreadFactory("I/O Packet Pool", Thread.NORM_PRIORITY + 1)); - _generalPacketsThreadPool = new ThreadPoolExecutor(Config.GENERAL_PACKET_THREAD_CORE_SIZE, Config.GENERAL_PACKET_THREAD_CORE_SIZE + 2, 15L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(), new PriorityThreadFactory("Normal Packet Pool", Thread.NORM_PRIORITY + 1)); - _generalThreadPool = new ThreadPoolExecutor(Config.GENERAL_THREAD_CORE_SIZE, Config.GENERAL_THREAD_CORE_SIZE + 2, 5L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(), new PriorityThreadFactory("General Pool", Thread.NORM_PRIORITY)); - _aiScheduledThreadPool = new ScheduledThreadPoolExecutor(Config.AI_MAX_THREAD, new PriorityThreadFactory("AISTPool", Thread.NORM_PRIORITY)); - _eventThreadPool = new ThreadPoolExecutor(Config.EVENT_MAX_THREAD, Config.EVENT_MAX_THREAD + 2, 5L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(), new PriorityThreadFactory("Event Pool", Thread.NORM_PRIORITY)); - scheduleGeneralAtFixedRate(new PurgeTask(), 10, 5, TimeUnit.MINUTES); + // Feed instant pool. + poolCount = Config.INSTANT_THREAD_POOL_COUNT; + if (poolCount == -1) + { + poolCount = Runtime.getRuntime().availableProcessors(); + } + + _instantPools = new ThreadPoolExecutor[poolCount]; + for (int i = 0; i < poolCount; i++) + { + _instantPools[i] = new ThreadPoolExecutor(Config.THREADS_PER_INSTANT_THREAD_POOL, Config.THREADS_PER_INSTANT_THREAD_POOL, 0, TimeUnit.SECONDS, new ArrayBlockingQueue(100000)); + } + + // Prestart core threads. + for (ScheduledThreadPoolExecutor threadPool : _scheduledPools) + { + threadPool.prestartAllCoreThreads(); + } + + for (ThreadPoolExecutor threadPool : _instantPools) + { + threadPool.prestartAllCoreThreads(); + } + + // Launch purge task. + scheduleAtFixedRate(() -> + { + purge(); + }, 600000, 600000); + + LOG.info("ThreadPoolManager: Initialized " + getPoolSize(_instantPools) + "/" + getMaximumPoolSize(_instantPools) + " instant thread(s)."); + LOG.info("ThreadPoolManager: Initialized " + getPoolSize(_scheduledPools) + "/" + getMaximumPoolSize(_scheduledPools) + " scheduled thread(s)."); + } + + public static void purge() + { + for (ScheduledThreadPoolExecutor threadPool1 : _scheduledPools) + { + threadPool1.purge(); + } + for (ThreadPoolExecutor threadPool2 : _instantPools) + { + threadPool2.purge(); + } } /** - * Schedules an effect task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in the given time unit - * @param unit the time unit of the delay parameter - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation + * Schedules a one-shot action that becomes enabled after a delay. The pool is chosen based on pools activity. + * @param r : the task to execute. + * @param delay : the time from now to delay execution. + * @return a ScheduledFuture representing pending completion of the task and whose get() method will return null upon completion. */ - public ScheduledFuture scheduleEffect(Runnable task, long delay, TimeUnit unit) + public static ScheduledFuture schedule(Runnable r, long delay) { try { - return _effectsScheduledThreadPool.schedule(new RunnableWrapper(task), delay, unit); + return getPool(_scheduledPools).schedule(new TaskWrapper(r), validate(delay), TimeUnit.MILLISECONDS); } - catch (RejectedExecutionException e) + catch (Exception e) { return null; } } /** - * Schedules an effect task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation + * Schedules a periodic action that becomes enabled after a delay. The pool is chosen based on pools activity. + * @param r : the task to execute. + * @param delay : the time from now to delay execution. + * @param period : the period between successive executions. + * @return a ScheduledFuture representing pending completion of the task and whose get() method will throw an exception upon cancellation. */ - public ScheduledFuture scheduleEffect(Runnable task, long delay) - { - return scheduleEffect(task, delay, TimeUnit.MILLISECONDS); - } - - /** - * Schedules an effect task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in the given time unit - * @param period the period between executions in the given time unit - * @param unit the time unit of the initialDelay and period parameters - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleEffectAtFixedRate(Runnable task, long initialDelay, long period, TimeUnit unit) + public static ScheduledFuture scheduleAtFixedRate(Runnable r, long delay, long period) { try { - return _effectsScheduledThreadPool.scheduleAtFixedRate(new RunnableWrapper(task), initialDelay, period, unit); + return getPool(_scheduledPools).scheduleAtFixedRate(new TaskWrapper(r), validate(delay), validate(period), TimeUnit.MILLISECONDS); } - catch (RejectedExecutionException e) + catch (Exception e) { - return null; /* shutdown, ignore */ + return null; } } /** - * Schedules an effect task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in milliseconds - * @param period the period between executions in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation + * Executes the given task sometime in the future. + * @param r : the task to execute. */ - public ScheduledFuture scheduleEffectAtFixedRate(Runnable task, long initialDelay, long period) - { - return scheduleEffectAtFixedRate(task, initialDelay, period, TimeUnit.MILLISECONDS); - } - - /** - * Schedules a general task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in the given time unit - * @param unit the time unit of the delay parameter - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleGeneral(Runnable task, long delay, TimeUnit unit) + public static void execute(Runnable r) { try { - return _generalScheduledThreadPool.schedule(new RunnableWrapper(task), delay, unit); + getPool(_instantPools).execute(new TaskWrapper(r)); } - catch (RejectedExecutionException e) + catch (Exception e) { - return null; /* shutdown, ignore */ } } - /** - * Schedules a general task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleGeneral(Runnable task, long delay) + public static String[] getStats() { - return scheduleGeneral(task, delay, TimeUnit.MILLISECONDS); + List stats = new ArrayList<>(); + for (int i = 0; i < _scheduledPools.length; i++) + { + final ScheduledThreadPoolExecutor threadPool = _scheduledPools[i]; + stats.add("Scheduled pool #" + i + ":"); + stats.add(" |- ActiveCount: ...... " + threadPool.getActiveCount()); + stats.add(" |- CorePoolSize: ..... " + threadPool.getCorePoolSize()); + stats.add(" |- PoolSize: ......... " + threadPool.getPoolSize()); + stats.add(" |- LargestPoolSize: .. " + threadPool.getLargestPoolSize()); + stats.add(" |- MaximumPoolSize: .. " + threadPool.getMaximumPoolSize()); + stats.add(" |- CompletedTaskCount: " + threadPool.getCompletedTaskCount()); + stats.add(" |- QueuedTaskCount: .. " + threadPool.getQueue().size()); + stats.add(" |- TaskCount: ........ " + threadPool.getTaskCount()); + stats.add(" | -------"); + } + for (int i = 0; i < _instantPools.length; i++) + { + final ThreadPoolExecutor threadPool = _instantPools[i]; + stats.add("Scheduled pool #" + i + ":"); + stats.add(" |- ActiveCount: ...... " + threadPool.getActiveCount()); + stats.add(" |- CorePoolSize: ..... " + threadPool.getCorePoolSize()); + stats.add(" |- PoolSize: ......... " + threadPool.getPoolSize()); + stats.add(" |- LargestPoolSize: .. " + threadPool.getLargestPoolSize()); + stats.add(" |- MaximumPoolSize: .. " + threadPool.getMaximumPoolSize()); + stats.add(" |- CompletedTaskCount: " + threadPool.getCompletedTaskCount()); + stats.add(" |- QueuedTaskCount: .. " + threadPool.getQueue().size()); + stats.add(" |- TaskCount: ........ " + threadPool.getTaskCount()); + stats.add(" | -------"); + } + return stats.toArray(new String[stats.size()]); } /** - * Schedules a general task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in the given time unit - * @param period the period between executions in the given time unit - * @param unit the time unit of the initialDelay and period parameters - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation + * Shutdown thread pooling system correctly. Send different informations. */ - public ScheduledFuture scheduleGeneralAtFixedRate(Runnable task, long initialDelay, long period, TimeUnit unit) + public static void shutdown() { try { - return _generalScheduledThreadPool.scheduleAtFixedRate(new RunnableWrapper(task), initialDelay, period, unit); - } - catch (RejectedExecutionException e) - { - return null; /* shutdown, ignore */ - } - } - - /** - * Schedules a event task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in the given time unit - * @param unit the time unit of the delay parameter - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleEvent(Runnable task, long delay, TimeUnit unit) - { - try - { - return _eventScheduledThreadPool.schedule(new RunnableWrapper(task), delay, unit); - } - catch (RejectedExecutionException e) - { - return null; /* shutdown, ignore */ - } - } - - /** - * Schedules a event task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleEvent(Runnable task, long delay) - { - return scheduleEvent(task, delay, TimeUnit.MILLISECONDS); - } - - /** - * Schedules a event task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in the given time unit - * @param period the period between executions in the given time unit - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleEventAtFixedRate(Runnable task, long initialDelay, long period) - { - return scheduleEventAtFixedRate(task, initialDelay, period, TimeUnit.MILLISECONDS); - } - - /** - * Schedules a event task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in the given time unit - * @param period the period between executions in the given time unit - * @param unit the time unit of the initialDelay and period parameters - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleEventAtFixedRate(Runnable task, long initialDelay, long period, TimeUnit unit) - { - try - { - return _eventScheduledThreadPool.scheduleAtFixedRate(new RunnableWrapper(task), initialDelay, period, unit); - } - catch (RejectedExecutionException e) - { - return null; /* shutdown, ignore */ - } - } - - /** - * Schedules a general task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in milliseconds - * @param period the period between executions in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleGeneralAtFixedRate(Runnable task, long initialDelay, long period) - { - return scheduleGeneralAtFixedRate(task, initialDelay, period, TimeUnit.MILLISECONDS); - } - - /** - * Schedules an AI task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in the given time unit - * @param unit the time unit of the delay parameter - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleAi(Runnable task, long delay, TimeUnit unit) - { - try - { - return _aiScheduledThreadPool.schedule(new RunnableWrapper(task), delay, unit); - } - catch (RejectedExecutionException e) - { - return null; /* shutdown, ignore */ - } - } - - /** - * Schedules an AI task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleAi(Runnable task, long delay) - { - return scheduleAi(task, delay, TimeUnit.MILLISECONDS); - } - - /** - * Schedules a general task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in the given time unit - * @param period the period between executions in the given time unit - * @param unit the time unit of the initialDelay and period parameters - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleAiAtFixedRate(Runnable task, long initialDelay, long period, TimeUnit unit) - { - try - { - return _aiScheduledThreadPool.scheduleAtFixedRate(new RunnableWrapper(task), initialDelay, period, unit); - } - catch (RejectedExecutionException e) - { - return null; /* shutdown, ignore */ - } - } - - /** - * Schedules a general task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in milliseconds - * @param period the period between executions in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleAiAtFixedRate(Runnable task, long initialDelay, long period) - { - return scheduleAiAtFixedRate(task, initialDelay, period, TimeUnit.MILLISECONDS); - } - - /** - * Executes a packet task sometime in future in another thread. - * @param task the task to execute - */ - public void executePacket(Runnable task) - { - try - { - _generalPacketsThreadPool.execute(task); - } - catch (RejectedExecutionException e) - { - /* shutdown, ignore */ - } - } - - /** - * Executes an IO packet task sometime in future in another thread. - * @param task the task to execute - */ - public void executeIOPacket(Runnable task) - { - try - { - _ioPacketsThreadPool.execute(task); - } - catch (RejectedExecutionException e) - { - /* shutdown, ignore */ - } - } - - /** - * Executes a general task sometime in future in another thread. - * @param task the task to execute - */ - public void executeGeneral(Runnable task) - { - try - { - _generalThreadPool.execute(new RunnableWrapper(task)); - } - catch (RejectedExecutionException e) - { - /* shutdown, ignore */ - } - } - - /** - * Executes an AI task sometime in future in another thread. - * @param task the task to execute - */ - public void executeAi(Runnable task) - { - try - { - _aiScheduledThreadPool.execute(new RunnableWrapper(task)); - } - catch (RejectedExecutionException e) - { - /* shutdown, ignore */ - } - } - - /** - * Executes an Event task sometime in future in another thread. - * @param task the task to execute - */ - public void executeEvent(Runnable task) - { - try - { - _eventThreadPool.execute(new RunnableWrapper(task)); - } - catch (RejectedExecutionException e) - { - /* shutdown, ignore */ - } - } - - public StatsSet getStats(String category) - { - final StatsSet StatsSet = new StatsSet(); - - switch (category) - { - case "EFFECTS": - { - StatsSet.set("ActiveThreads", _effectsScheduledThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _effectsScheduledThreadPool.getCorePoolSize()); - StatsSet.set("PoolSize", _effectsScheduledThreadPool.getPoolSize()); - StatsSet.set("MaximumPoolSize", _effectsScheduledThreadPool.getMaximumPoolSize()); - StatsSet.set("CompletedTasks", (int) _effectsScheduledThreadPool.getCompletedTaskCount()); - StatsSet.set("ScheduledTasks", _effectsScheduledThreadPool.getQueue().size()); - break; - } - case "GENERAL": - { - StatsSet.set("ActiveThreads", _generalScheduledThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSizes", _generalScheduledThreadPool.getCorePoolSize()); - StatsSet.set("PoolSizes", _generalScheduledThreadPool.getPoolSize()); - StatsSet.set("MaximumPoolSizes", _generalScheduledThreadPool.getMaximumPoolSize()); - StatsSet.set("CompletedTasks", (int) _generalScheduledThreadPool.getCompletedTaskCount()); - StatsSet.set("ScheduledTasks", _generalScheduledThreadPool.getQueue().size()); - break; - } - case "AI": - { - StatsSet.set("ActiveThreads", _aiScheduledThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _aiScheduledThreadPool.getCorePoolSize()); - StatsSet.set("PoolSize", _aiScheduledThreadPool.getPoolSize()); - StatsSet.set("MaximumPoolSize", _aiScheduledThreadPool.getMaximumPoolSize()); - StatsSet.set("CompletedTasks", (int) _aiScheduledThreadPool.getCompletedTaskCount()); - StatsSet.set("ScheduledTasks", _aiScheduledThreadPool.getQueue().size()); - break; - } - case "EVENT": - { - StatsSet.set("ActiveThreads", _eventScheduledThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _eventScheduledThreadPool.getCorePoolSize()); - StatsSet.set("PoolSize", _eventScheduledThreadPool.getPoolSize()); - StatsSet.set("MaximumPoolSize", _eventScheduledThreadPool.getMaximumPoolSize()); - StatsSet.set("CompletedTasks", (int) _eventScheduledThreadPool.getCompletedTaskCount()); - StatsSet.set("ScheduledTasks", _eventScheduledThreadPool.getQueue().size()); - break; - } - case "PACKETS": - { - StatsSet.set("ActiveThreads", _generalPacketsThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _generalPacketsThreadPool.getCorePoolSize()); - StatsSet.set("MaximumPoolSize", _generalPacketsThreadPool.getMaximumPoolSize()); - StatsSet.set("LargestPoolSize", _generalPacketsThreadPool.getLargestPoolSize()); - StatsSet.set("PoolSize", _generalPacketsThreadPool.getPoolSize()); - StatsSet.set("CompletedTasks", (int) _generalPacketsThreadPool.getCompletedTaskCount()); - StatsSet.set("QueuedTasks", _generalPacketsThreadPool.getQueue().size()); - break; - } - case "IOPACKETS": - { - StatsSet.set("ActiveThreads", _ioPacketsThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _ioPacketsThreadPool.getCorePoolSize()); - StatsSet.set("MaximumPoolSize", _ioPacketsThreadPool.getMaximumPoolSize()); - StatsSet.set("LargestPoolSize", _ioPacketsThreadPool.getLargestPoolSize()); - StatsSet.set("PoolSize", _ioPacketsThreadPool.getPoolSize()); - StatsSet.set("CompletedTasks", (int) _ioPacketsThreadPool.getCompletedTaskCount()); - StatsSet.set("QueuedTasks", _ioPacketsThreadPool.getQueue().size()); - break; - } - case "GENERAL_TASKS": - { - StatsSet.set("ActiveThreads", _generalThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _generalThreadPool.getCorePoolSize()); - StatsSet.set("MaximumPoolSize", _generalThreadPool.getMaximumPoolSize()); - StatsSet.set("LargestPoolSize", _generalThreadPool.getLargestPoolSize()); - StatsSet.set("PoolSize", _generalThreadPool.getPoolSize()); - StatsSet.set("CompletedTasks", (int) _generalThreadPool.getCompletedTaskCount()); - StatsSet.set("QueuedTasks", _generalThreadPool.getQueue().size()); - break; - } - case "EVENT_TASKS": - { - StatsSet.set("ActiveThreads", _eventThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _eventThreadPool.getCorePoolSize()); - StatsSet.set("MaximumPoolSize", _eventThreadPool.getMaximumPoolSize()); - StatsSet.set("LargestPoolSize", _eventThreadPool.getLargestPoolSize()); - StatsSet.set("PoolSize", _eventThreadPool.getPoolSize()); - StatsSet.set("CompletedTasks", (int) _eventThreadPool.getCompletedTaskCount()); - StatsSet.set("QueuedTasks", _eventThreadPool.getQueue().size()); - break; - } - } - return StatsSet; - } - - public String[] getStats() - { - return new String[] - { - "STP:", - " + Effects:", - " |- ActiveThreads: " + _effectsScheduledThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _effectsScheduledThreadPool.getCorePoolSize(), - " |- PoolSize: " + _effectsScheduledThreadPool.getPoolSize(), - " |- MaximumPoolSize: " + _effectsScheduledThreadPool.getMaximumPoolSize(), - " |- CompletedTasks: " + _effectsScheduledThreadPool.getCompletedTaskCount(), - " |- ScheduledTasks: " + _effectsScheduledThreadPool.getQueue().size(), - " | -------", - " + General:", - " |- ActiveThreads: " + _generalScheduledThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _generalScheduledThreadPool.getCorePoolSize(), - " |- PoolSize: " + _generalScheduledThreadPool.getPoolSize(), - " |- MaximumPoolSize: " + _generalScheduledThreadPool.getMaximumPoolSize(), - " |- CompletedTasks: " + _generalScheduledThreadPool.getCompletedTaskCount(), - " |- ScheduledTasks: " + _generalScheduledThreadPool.getQueue().size(), - " | -------", - " + AI:", - " |- ActiveThreads: " + _aiScheduledThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _aiScheduledThreadPool.getCorePoolSize(), - " |- PoolSize: " + _aiScheduledThreadPool.getPoolSize(), - " |- MaximumPoolSize: " + _aiScheduledThreadPool.getMaximumPoolSize(), - " |- CompletedTasks: " + _aiScheduledThreadPool.getCompletedTaskCount(), - " |- ScheduledTasks: " + _aiScheduledThreadPool.getQueue().size(), - " | -------", - " + Event:", - " |- ActiveThreads: " + _eventScheduledThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _eventScheduledThreadPool.getCorePoolSize(), - " |- PoolSize: " + _eventScheduledThreadPool.getPoolSize(), - " |- MaximumPoolSize: " + _eventScheduledThreadPool.getMaximumPoolSize(), - " |- CompletedTasks: " + _eventScheduledThreadPool.getCompletedTaskCount(), - " |- ScheduledTasks: " + _eventScheduledThreadPool.getQueue().size(), - "TP:", - " + Packets:", - " |- ActiveThreads: " + _generalPacketsThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _generalPacketsThreadPool.getCorePoolSize(), - " |- MaximumPoolSize: " + _generalPacketsThreadPool.getMaximumPoolSize(), - " |- LargestPoolSize: " + _generalPacketsThreadPool.getLargestPoolSize(), - " |- PoolSize: " + _generalPacketsThreadPool.getPoolSize(), - " |- CompletedTasks: " + _generalPacketsThreadPool.getCompletedTaskCount(), - " |- QueuedTasks: " + _generalPacketsThreadPool.getQueue().size(), - " | -------", - " + I/O Packets:", - " |- ActiveThreads: " + _ioPacketsThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _ioPacketsThreadPool.getCorePoolSize(), - " |- MaximumPoolSize: " + _ioPacketsThreadPool.getMaximumPoolSize(), - " |- LargestPoolSize: " + _ioPacketsThreadPool.getLargestPoolSize(), - " |- PoolSize: " + _ioPacketsThreadPool.getPoolSize(), - " |- CompletedTasks: " + _ioPacketsThreadPool.getCompletedTaskCount(), - " |- QueuedTasks: " + _ioPacketsThreadPool.getQueue().size(), - " | -------", - " + General Tasks:", - " |- ActiveThreads: " + _generalThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _generalThreadPool.getCorePoolSize(), - " |- MaximumPoolSize: " + _generalThreadPool.getMaximumPoolSize(), - " |- LargestPoolSize: " + _generalThreadPool.getLargestPoolSize(), - " |- PoolSize: " + _generalThreadPool.getPoolSize(), - " |- CompletedTasks: " + _generalThreadPool.getCompletedTaskCount(), - " |- QueuedTasks: " + _generalThreadPool.getQueue().size(), - " | -------", - " + Event Tasks:", - " |- ActiveThreads: " + _eventThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _eventThreadPool.getCorePoolSize(), - " |- MaximumPoolSize: " + _eventThreadPool.getMaximumPoolSize(), - " |- LargestPoolSize: " + _eventThreadPool.getLargestPoolSize(), - " |- PoolSize: " + _eventThreadPool.getPoolSize(), - " |- CompletedTasks: " + _eventThreadPool.getCompletedTaskCount(), - " |- QueuedTasks: " + _eventThreadPool.getQueue().size(), - " | -------" - }; - } - - private static class PriorityThreadFactory implements ThreadFactory - { - private final int _prio; - private final String _name; - private final AtomicInteger _threadNumber = new AtomicInteger(1); - private final ThreadGroup _group; - - public PriorityThreadFactory(String name, int prio) - { - _prio = prio; - _name = name; - _group = new ThreadGroup(_name); - } - - @Override - public Thread newThread(Runnable r) - { - final Thread t = new Thread(_group, r, _name + "-" + _threadNumber.getAndIncrement()); - t.setPriority(_prio); - return t; - } - - public ThreadGroup getGroup() - { - return _group; - } - } - - public void shutdown() - { - _shutdown = true; - try - { - _effectsScheduledThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _generalScheduledThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _generalPacketsThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _ioPacketsThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _generalThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _eventThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _effectsScheduledThreadPool.shutdown(); - _generalScheduledThreadPool.shutdown(); - _generalPacketsThreadPool.shutdown(); - _ioPacketsThreadPool.shutdown(); - _generalThreadPool.shutdown(); - _eventThreadPool.shutdown(); - LOGGER.info("All ThreadPools are now stopped"); + System.out.println("ThreadPoolManager: Shutting down."); - } - catch (InterruptedException e) - { - LOGGER.log(Level.WARNING, "", e); - } - } - - public boolean isShutdown() - { - return _shutdown; - } - - public void purge() - { - _effectsScheduledThreadPool.purge(); - _generalScheduledThreadPool.purge(); - _aiScheduledThreadPool.purge(); - _eventScheduledThreadPool.purge(); - _ioPacketsThreadPool.purge(); - _generalPacketsThreadPool.purge(); - _generalThreadPool.purge(); - _eventThreadPool.purge(); - } - - public String getPacketStats() - { - final StringBuilder sb = new StringBuilder(1000); - final ThreadFactory tf = _generalPacketsThreadPool.getThreadFactory(); - if (tf instanceof PriorityThreadFactory) - { - final PriorityThreadFactory ptf = (PriorityThreadFactory) tf; - final int count = ptf.getGroup().activeCount(); - final Thread[] threads = new Thread[count + 2]; - ptf.getGroup().enumerate(threads); - sb.append("General Packet Thread Pool:" + Config.EOL + "Tasks in the queue: " + _generalPacketsThreadPool.getQueue().size() + Config.EOL + "Showing threads stack trace:" + Config.EOL + "There should be " + count + " Threads" + Config.EOL); - for (Thread t : threads) + for (ScheduledThreadPoolExecutor threadPool : _scheduledPools) { - if (t == null) - { - continue; - } - - sb.append(t.getName()); - sb.append(Config.EOL); - for (StackTraceElement ste : t.getStackTrace()) - { - sb.append(ste); - sb.append(Config.EOL); - } + threadPool.shutdownNow(); } - } - - sb.append("Packet Tp stack traces printed."); - sb.append(Config.EOL); - return sb.toString(); - } - - public String getIOPacketStats() - { - final StringBuilder sb = new StringBuilder(1000); - final ThreadFactory tf = _ioPacketsThreadPool.getThreadFactory(); - - if (tf instanceof PriorityThreadFactory) - { - final PriorityThreadFactory ptf = (PriorityThreadFactory) tf; - final int count = ptf.getGroup().activeCount(); - final Thread[] threads = new Thread[count + 2]; - ptf.getGroup().enumerate(threads); - sb.append("I/O Packet Thread Pool:" + Config.EOL + "Tasks in the queue: " + _ioPacketsThreadPool.getQueue().size() + Config.EOL + "Showing threads stack trace:" + Config.EOL + "There should be " + count + " Threads" + Config.EOL); - for (Thread t : threads) + for (ThreadPoolExecutor threadPool : _instantPools) { - if (t == null) - { - continue; - } - - sb.append(t.getName()); - sb.append(Config.EOL); - for (StackTraceElement ste : t.getStackTrace()) - { - sb.append(ste); - sb.append(Config.EOL); - } + threadPool.shutdownNow(); } } - - sb.append("Packet Tp stack traces printed." + Config.EOL); - - return sb.toString(); - } - - public String getGeneralStats() - { - final StringBuilder sb = new StringBuilder(1000); - final ThreadFactory tf = _generalThreadPool.getThreadFactory(); - - if (tf instanceof PriorityThreadFactory) + catch (Throwable t) { - final PriorityThreadFactory ptf = (PriorityThreadFactory) tf; - final int count = ptf.getGroup().activeCount(); - final Thread[] threads = new Thread[count + 2]; - ptf.getGroup().enumerate(threads); - sb.append("General Thread Pool:" + Config.EOL + "Tasks in the queue: " + _generalThreadPool.getQueue().size() + Config.EOL + "Showing threads stack trace:" + Config.EOL + "There should be " + +count + " Threads" + Config.EOL); - - for (Thread t : threads) - { - if (t == null) - { - continue; - } - - sb.append(t.getName()); - sb.append(Config.EOL); - for (StackTraceElement ste : t.getStackTrace()) - { - sb.append(ste); - sb.append(Config.EOL); - } - } + t.printStackTrace(); } - - sb.append("Packet Tp stack traces printed." + Config.EOL); - - return sb.toString(); } - protected class PurgeTask implements Runnable + /** + * @param : The pool type. + * @param threadPools : The pool array to check. + * @return the less fed pool. + */ + private static T getPool(T[] threadPools) { + return threadPools[_threadPoolRandomizer++ % threadPools.length]; + } + + /** + * @param delay : The delay to validate. + * @return a secured value, from 0 to MAX_DELAY. + */ + private static long validate(long delay) + { + return Math.max(0, Math.min(MAX_DELAY, delay)); + } + + /** + * @param threadPools : The pool array to check. + * @return the overall actual pools size. + */ + private static long getPoolSize(ThreadPoolExecutor[] threadPools) + { + long result = 0; + + for (ThreadPoolExecutor threadPool : threadPools) + { + result += threadPool.getPoolSize(); + } + + return result; + } + + /** + * @param threadPools : The pool array to check. + * @return the overall maximum pools size. + */ + private static long getMaximumPoolSize(ThreadPoolExecutor[] threadPools) + { + long result = 0; + + for (ThreadPoolExecutor threadPool : threadPools) + { + result += threadPool.getMaximumPoolSize(); + } + + return result; + } + + public static final class TaskWrapper implements Runnable + { + private final Runnable _runnable; + + public TaskWrapper(Runnable runnable) + { + _runnable = runnable; + } + @Override public void run() { - _effectsScheduledThreadPool.purge(); - _generalScheduledThreadPool.purge(); - _aiScheduledThreadPool.purge(); - _eventScheduledThreadPool.purge(); + try + { + _runnable.run(); + } + catch (RuntimeException e) + { + LOG.warning("Exception in a Runnable execution:" + e); + } } } - - private static class SingletonHolder - { - protected static final ThreadPoolManager _instance = new ThreadPoolManager(); - } } \ No newline at end of file diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/AbstractAI.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/AbstractAI.java index 6264f0fd61..b0de12e3a7 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/AbstractAI.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/AbstractAI.java @@ -728,7 +728,7 @@ public abstract class AbstractAI implements Ctrl setTarget(target); final int followRange = range == -1 ? Rnd.get(50, 100) : range; - _followTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(() -> + _followTask = ThreadPoolManager.scheduleAtFixedRate(() -> { try { diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/L2AttackableAI.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/L2AttackableAI.java index b2726b7a08..c363c397b5 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/L2AttackableAI.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/L2AttackableAI.java @@ -203,7 +203,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable // If not idle - create an AI task (schedule onEvtThink repeatedly) if (_aiTask == null) { - _aiTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this, 1000, 1000); + _aiTask = ThreadPoolManager.scheduleAtFixedRate(this, 1000, 1000); } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/L2CharacterAI.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/L2CharacterAI.java index f307a1741d..c5cab58d48 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/L2CharacterAI.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/L2CharacterAI.java @@ -308,7 +308,7 @@ public class L2CharacterAI extends AbstractAI if (_actor.isAttackingNow()) { - ThreadPoolManager.getInstance().scheduleGeneral(new CastTask(_actor, skill, target, item, forceUse, dontMove), _actor.getAttackEndTime() - TimeUnit.MILLISECONDS.toNanos(System.currentTimeMillis())); + ThreadPoolManager.schedule(new CastTask(_actor, skill, target, item, forceUse, dontMove), _actor.getAttackEndTime() - TimeUnit.MILLISECONDS.toNanos(System.currentTimeMillis())); } else { diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/L2DoorAI.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/L2DoorAI.java index 5df2a74538..1c536565b1 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/L2DoorAI.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/L2DoorAI.java @@ -89,7 +89,7 @@ public class L2DoorAI extends L2CharacterAI @Override protected void onEvtAttacked(L2Character attacker) { - ThreadPoolManager.getInstance().executeGeneral(new onEventAttackedDoorTask((L2DoorInstance) _actor, attacker)); + ThreadPoolManager.execute(new onEventAttackedDoorTask((L2DoorInstance) _actor, attacker)); } @Override diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/L2FortSiegeGuardAI.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/L2FortSiegeGuardAI.java index 9776e16aa8..79f39cb51d 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/L2FortSiegeGuardAI.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/L2FortSiegeGuardAI.java @@ -217,7 +217,7 @@ public class L2FortSiegeGuardAI extends L2CharacterAI implements Runnable // If not idle - create an AI task (schedule onEvtThink repeatedly) if (_aiTask == null) { - _aiTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this, 1000, 1000); + _aiTask = ThreadPoolManager.scheduleAtFixedRate(this, 1000, 1000); } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/L2SiegeGuardAI.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/L2SiegeGuardAI.java index f6d5a3b6f1..caf5f39544 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/L2SiegeGuardAI.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/L2SiegeGuardAI.java @@ -204,7 +204,7 @@ public class L2SiegeGuardAI extends L2CharacterAI implements Runnable // If not idle - create an AI task (schedule onEvtThink repeatedly) if (_aiTask == null) { - _aiTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this, 1000, 1000); + _aiTask = ThreadPoolManager.scheduleAtFixedRate(this, 1000, 1000); } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/L2SummonAI.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/L2SummonAI.java index 26c09985b0..00c00b8ff9 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/L2SummonAI.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/ai/L2SummonAI.java @@ -342,7 +342,7 @@ public class L2SummonAI extends L2PlayableAI implements Runnable { if (_avoidTask == null) { - _avoidTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this, 100, 100); + _avoidTask = ThreadPoolManager.scheduleAtFixedRate(this, 100, 100); } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/cache/WarehouseCacheManager.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/cache/WarehouseCacheManager.java index ae00f2fe33..258e120fa2 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/cache/WarehouseCacheManager.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/cache/WarehouseCacheManager.java @@ -33,7 +33,7 @@ public class WarehouseCacheManager protected WarehouseCacheManager() { - ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new CacheScheduler(), 120000, 60000); + ThreadPoolManager.scheduleAtFixedRate(new CacheScheduler(), 120000, 60000); } public void addCacheTask(L2PcInstance pc) diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/data/sql/impl/ClanTable.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/data/sql/impl/ClanTable.java index 4d4718f475..93625c6b3c 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/data/sql/impl/ClanTable.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/data/sql/impl/ClanTable.java @@ -331,7 +331,7 @@ public class ClanTable public void scheduleRemoveClan(int clanId) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { if (getClan(clanId) == null) { diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/datatables/BotReportTable.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/datatables/BotReportTable.java index aa6c03a3ac..a145b65dba 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/datatables/BotReportTable.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/datatables/BotReportTable.java @@ -421,11 +421,11 @@ public final class BotReportTable c.set(Calendar.DAY_OF_YEAR, c.get(Calendar.DAY_OF_YEAR) + 1); } - ThreadPoolManager.getInstance().scheduleGeneral(new ResetPointTask(), c.getTimeInMillis() - System.currentTimeMillis()); + ThreadPoolManager.schedule(new ResetPointTask(), c.getTimeInMillis() - System.currentTimeMillis()); } catch (Exception e) { - ThreadPoolManager.getInstance().scheduleGeneral(new ResetPointTask(), 24 * 3600 * 1000); + ThreadPoolManager.schedule(new ResetPointTask(), 24 * 3600 * 1000); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Could not properly schedule bot report points reset task. Scheduled in 24 hours.", e); } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/datatables/ItemTable.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/datatables/ItemTable.java index f506bb6e4f..29c7c41a51 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/datatables/ItemTable.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/datatables/ItemTable.java @@ -221,14 +221,14 @@ public class ItemTable if ((raid.getFirstCommandChannelAttacked() != null) && !Config.AUTO_LOOT_RAIDS) { item.setOwnerId(raid.getFirstCommandChannelAttacked().getLeaderObjectId()); - itemLootShedule = ThreadPoolManager.getInstance().scheduleGeneral(new ResetOwner(item), Config.LOOT_RAIDS_PRIVILEGE_INTERVAL); + itemLootShedule = ThreadPoolManager.schedule(new ResetOwner(item), Config.LOOT_RAIDS_PRIVILEGE_INTERVAL); item.setItemLootShedule(itemLootShedule); } } else if (!Config.AUTO_LOOT || ((reference instanceof L2EventMonsterInstance) && ((L2EventMonsterInstance) reference).eventDropOnGround())) { item.setOwnerId(actor.getObjectId()); - itemLootShedule = ThreadPoolManager.getInstance().scheduleGeneral(new ResetOwner(item), 15000); + itemLootShedule = ThreadPoolManager.schedule(new ResetOwner(item), 15000); item.setItemLootShedule(itemLootShedule); } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/idfactory/BitSetIDFactory.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/idfactory/BitSetIDFactory.java index a89517e6d8..b81189c6db 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/idfactory/BitSetIDFactory.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/idfactory/BitSetIDFactory.java @@ -53,7 +53,7 @@ public class BitSetIDFactory extends IdFactory synchronized (BitSetIDFactory.class) { - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new BitSetCapacityCheck(), 30000, 30000); + ThreadPoolManager.scheduleAtFixedRate(new BitSetCapacityCheck(), 30000, 30000); initialize(); } LOGGER.info(getClass().getSimpleName() + ": " + _freeIds.size() + " id's available."); diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/CastleManorManager.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/CastleManorManager.java index 4bf663ecee..2e64596385 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/CastleManorManager.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/CastleManorManager.java @@ -29,7 +29,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; import java.util.stream.Collectors; @@ -107,7 +106,7 @@ public final class CastleManorManager implements IGameXmlReader, IStorable // Schedule autosave if (!Config.ALT_MANOR_SAVE_ALL_ACTIONS) { - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this::storeMe, Config.ALT_MANOR_SAVE_PERIOD_RATE, Config.ALT_MANOR_SAVE_PERIOD_RATE, TimeUnit.HOURS); + ThreadPoolManager.scheduleAtFixedRate(this::storeMe, Config.ALT_MANOR_SAVE_PERIOD_RATE * 60 * 60 * 1000, Config.ALT_MANOR_SAVE_PERIOD_RATE * 60 * 60 * 1000); } // Send debug message @@ -278,7 +277,7 @@ public final class CastleManorManager implements IGameXmlReader, IStorable break; } // Schedule mode change - ThreadPoolManager.getInstance().scheduleGeneral(this::changeMode, (_nextModeChange.getTimeInMillis() - System.currentTimeMillis())); + ThreadPoolManager.schedule(this::changeMode, (_nextModeChange.getTimeInMillis() - System.currentTimeMillis())); } public final void changeMode() diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/ClanEntryManager.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/ClanEntryManager.java index 9241243a07..62d750ea6e 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/ClanEntryManager.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/ClanEntryManager.java @@ -390,7 +390,7 @@ public class ClanEntryManager private static void lockPlayer(int playerId) { - _playerLocked.put(playerId, ThreadPoolManager.getInstance().scheduleGeneral(() -> + _playerLocked.put(playerId, ThreadPoolManager.schedule(() -> { _playerLocked.remove(playerId); }, LOCK_TIME)); @@ -398,7 +398,7 @@ public class ClanEntryManager private static void lockClan(int clanId) { - _clanLocked.put(clanId, ThreadPoolManager.getInstance().scheduleGeneral(() -> + _clanLocked.put(clanId, ThreadPoolManager.schedule(() -> { _clanLocked.remove(clanId); }, LOCK_TIME)); diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/CommissionManager.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/CommissionManager.java index 03aed150d6..d15bee76d5 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/CommissionManager.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/CommissionManager.java @@ -114,7 +114,7 @@ public final class CommissionManager } else { - commissionItem.setSaleEndTask(ThreadPoolManager.getInstance().scheduleGeneral(() -> expireSale(commissionItem), Duration.between(Instant.now(), commissionItem.getEndTime()).toMillis())); + commissionItem.setSaleEndTask(ThreadPoolManager.schedule(() -> expireSale(commissionItem), Duration.between(Instant.now(), commissionItem.getEndTime()).toMillis())); } } } @@ -259,7 +259,7 @@ public final class CommissionManager if (rs.next()) { final CommissionItem commissionItem = new CommissionItem(rs.getLong(1), itemInstance, pricePerUnit, startTime, durationInDays); - final ScheduledFuture saleEndTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> expireSale(commissionItem), Duration.between(Instant.now(), commissionItem.getEndTime()).toMillis()); + final ScheduledFuture saleEndTask = ThreadPoolManager.schedule(() -> expireSale(commissionItem), Duration.between(Instant.now(), commissionItem.getEndTime()).toMillis()); commissionItem.setSaleEndTask(saleEndTask); _commissionItems.put(commissionItem.getCommissionId(), commissionItem); player.getLastCommissionInfos().put(itemInstance.getId(), new ExResponseCommissionInfo(itemInstance.getId(), pricePerUnit, itemCount, (byte) ((durationInDays - 1) / 2))); diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/DBSpawnManager.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/DBSpawnManager.java index ed96d6cd39..7c337c11d2 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/DBSpawnManager.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/DBSpawnManager.java @@ -226,7 +226,7 @@ public class DBSpawnManager { LOGGER.info(getClass().getSimpleName() + ": Updated " + npc.getName() + " respawn time to " + Util.formatDate(new Date(respawnTime), "dd.MM.yyyy HH:mm")); - _schedules.put(npc.getId(), ThreadPoolManager.getInstance().scheduleGeneral(new SpawnSchedule(npc.getId()), respawnDelay)); + _schedules.put(npc.getId(), ThreadPoolManager.schedule(new SpawnSchedule(npc.getId()), respawnDelay)); updateDb(); } } @@ -287,7 +287,7 @@ public class DBSpawnManager else { final long spawnTime = respawnTime - System.currentTimeMillis(); - _schedules.put(npcId, ThreadPoolManager.getInstance().scheduleGeneral(new SpawnSchedule(npcId), spawnTime)); + _schedules.put(npcId, ThreadPoolManager.schedule(new SpawnSchedule(npcId), spawnTime)); } _spawns.put(npcId, spawn); diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/GraciaSeedsManager.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/GraciaSeedsManager.java index a3e653654f..4f5183877e 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/GraciaSeedsManager.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/GraciaSeedsManager.java @@ -101,7 +101,7 @@ public final class GraciaSeedsManager } else { - ThreadPoolManager.getInstance().scheduleEffect(new UpdateSoDStateTask(), Config.SOD_STAGE_2_LENGTH - timePast); + ThreadPoolManager.schedule(new UpdateSoDStateTask(), Config.SOD_STAGE_2_LENGTH - timePast); } break; case 3: diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/GrandBossManager.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/GrandBossManager.java index 532b343a8a..e7c0bad9c5 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/GrandBossManager.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/GrandBossManager.java @@ -98,7 +98,7 @@ public final class GrandBossManager implements IStorable { _log.log(Level.WARNING, getClass().getSimpleName() + ": Error while initializing GrandBossManager: " + e.getMessage(), e); } - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new GrandBossManagerStoreTask(), 5 * 60 * 1000, 5 * 60 * 1000); + ThreadPoolManager.scheduleAtFixedRate(new GrandBossManagerStoreTask(), 5 * 60 * 1000, 5 * 60 * 1000); } public int getBossStatus(int bossId) diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java index 3a0a2105d7..a77eb2d2d7 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java @@ -86,7 +86,7 @@ public final class HandysBlockCheckerManager { holder.checkAndShuffle(); } - ThreadPoolManager.getInstance().executeGeneral(holder.getEvent().new StartEvent()); + ThreadPoolManager.execute(holder.getEvent().new StartEvent()); } else { @@ -364,7 +364,7 @@ public final class HandysBlockCheckerManager private void schedulePenaltyRemoval(int objId) { - ThreadPoolManager.getInstance().scheduleGeneral(new PenaltyRemoveTask(objId), 10000); + ThreadPoolManager.schedule(new PenaltyRemoveTask(objId), 10000); } /** diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/ItemsOnGroundManager.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/ItemsOnGroundManager.java index 78e9cdb6a7..6871fb1dfe 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/ItemsOnGroundManager.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/ItemsOnGroundManager.java @@ -47,7 +47,7 @@ public final class ItemsOnGroundManager implements Runnable { if (Config.SAVE_DROPPED_ITEM_INTERVAL > 0) { - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this, Config.SAVE_DROPPED_ITEM_INTERVAL, Config.SAVE_DROPPED_ITEM_INTERVAL); + ThreadPoolManager.scheduleAtFixedRate(this, Config.SAVE_DROPPED_ITEM_INTERVAL, Config.SAVE_DROPPED_ITEM_INTERVAL); } load(); } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/MailManager.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/MailManager.java index b5e05d16eb..9a562ecf61 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/MailManager.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/MailManager.java @@ -74,11 +74,11 @@ public final class MailManager if (expiration < System.currentTimeMillis()) { - ThreadPoolManager.getInstance().scheduleGeneral(new MessageDeletionTask(msgId), 10000); + ThreadPoolManager.schedule(new MessageDeletionTask(msgId), 10000); } else { - ThreadPoolManager.getInstance().scheduleGeneral(new MessageDeletionTask(msgId), expiration - System.currentTimeMillis()); + ThreadPoolManager.schedule(new MessageDeletionTask(msgId), expiration - System.currentTimeMillis()); } } } @@ -209,7 +209,7 @@ public final class MailManager receiver.sendPacket(new ExUnReadMailCount(receiver)); } - ThreadPoolManager.getInstance().scheduleGeneral(new MessageDeletionTask(msg.getId()), msg.getExpiration() - System.currentTimeMillis()); + ThreadPoolManager.schedule(new MessageDeletionTask(msg.getId()), msg.getExpiration() - System.currentTimeMillis()); } public final void markAsReadInDb(int msgId) diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/PremiumManager.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/PremiumManager.java index 9075f34c27..3e52cd93bb 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/PremiumManager.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/PremiumManager.java @@ -111,7 +111,7 @@ public class PremiumManager */ private void startExpireTask(L2PcInstance player, long delay) { - ScheduledFuture task = ThreadPoolManager.getInstance().scheduleEvent(new PremiumExpireTask(player), delay); + ScheduledFuture task = ThreadPoolManager.schedule(new PremiumExpireTask(player), delay); expiretasks.put(player.getAccountName(), task); } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/ServerRestartManager.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/ServerRestartManager.java index 1d56bd7f20..478e1f78f5 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/ServerRestartManager.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/ServerRestartManager.java @@ -71,7 +71,7 @@ public class ServerRestartManager if (lastRestart != null) { nextRestartTime = new SimpleDateFormat("HH:mm").format(lastRestart.getTime()); - ThreadPoolManager.getInstance().scheduleGeneral(new ServerRestartTask(), lastDelay - (Config.SERVER_RESTART_SCHEDULE_COUNTDOWN * 1000)); + ThreadPoolManager.schedule(new ServerRestartTask(), lastDelay - (Config.SERVER_RESTART_SCHEDULE_COUNTDOWN * 1000)); _log.info("Scheduled server restart at " + lastRestart.getTime() + "."); } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/WalkingManager.java index 9d568d65c4..3da5ea144c 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -301,14 +301,14 @@ public final class WalkingManager implements IGameXmlReader npc.sendDebugMessage("Starting to move at route '" + routeName + "'"); npc.setIsRunning(node.runToLocation()); npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, node); - walk.setWalkCheckTask(ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new StartMovingTask(npc, routeName), 60000, 60000)); // start walk check task, for resuming walk after fight + walk.setWalkCheckTask(ThreadPoolManager.scheduleAtFixedRate(new StartMovingTask(npc, routeName), 60000, 60000)); // start walk check task, for resuming walk after fight _activeRoutes.put(npc.getObjectId(), walk); // register route } else { npc.sendDebugMessage("Failed to start moving along route '" + routeName + "', scheduled"); - ThreadPoolManager.getInstance().scheduleGeneral(new StartMovingTask(npc, routeName), 60000); + ThreadPoolManager.schedule(new StartMovingTask(npc, routeName), 60000); } } else @@ -455,7 +455,7 @@ public final class WalkingManager implements IGameXmlReader walk.setLastAction(System.currentTimeMillis()); } - ThreadPoolManager.getInstance().scheduleGeneral(new ArrivedTask(npc, walk), 100 + (node.getDelay() * 1000L)); + ThreadPoolManager.schedule(new ArrivedTask(npc, walk), 100 + (node.getDelay() * 1000L)); } } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/ClanWar.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/ClanWar.java index ef54a4f680..61a97fa208 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/ClanWar.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/ClanWar.java @@ -56,7 +56,7 @@ public final class ClanWar _startTime = System.currentTimeMillis(); _state = ClanWarState.BLOOD_DECLARATION; - _cancelTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _cancelTask = ThreadPoolManager.schedule(() -> { clanWarTimeout(); }, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); @@ -88,7 +88,7 @@ public final class ClanWar if ((_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) > System.currentTimeMillis()) { - _cancelTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _cancelTask = ThreadPoolManager.schedule(() -> { clanWarTimeout(); }, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); @@ -104,7 +104,7 @@ public final class ClanWar } else { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { ClanTable.getInstance().deleteclanswars(_attackerClanId, _attackedClanId); }, endTimePeriod); @@ -200,7 +200,7 @@ public final class ClanWar _winnerClanId = winnerClan.getId(); _endTime = System.currentTimeMillis(); - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { ClanTable.getInstance().deleteclanswars(cancelor.getId(), winnerClan.getId()); }, (_endTime + TIME_TO_DELETION_AFTER_DEFEAT) - System.currentTimeMillis()); @@ -225,7 +225,7 @@ public final class ClanWar _state = ClanWarState.TIE; _endTime = System.currentTimeMillis(); - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { ClanTable.getInstance().deleteclanswars(attackerClan.getId(), attackedClan.getId()); }, (_endTime + TIME_TO_DELETION_AFTER_CANCELLATION) - System.currentTimeMillis()); diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/CreatureContainer.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/CreatureContainer.java index f64dac8385..da2d7bcc94 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/CreatureContainer.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/CreatureContainer.java @@ -63,7 +63,7 @@ public class CreatureContainer { if ((_task == null) || _task.isDone()) { - _task = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this::update, 1000L, 1000L); + _task = ThreadPoolManager.scheduleAtFixedRate(this::update, 1000L, 1000L); } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/CursedWeapon.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/CursedWeapon.java index d6361de2d2..0f821abc37 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/CursedWeapon.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/CursedWeapon.java @@ -351,7 +351,7 @@ public class CursedWeapon implements INamable { _player.stopTransformation(true); - ThreadPoolManager.getInstance().scheduleGeneral(() -> _player.transform(transformationId, true), 500); + ThreadPoolManager.schedule(() -> _player.transform(transformationId, true), 500); } else { @@ -375,7 +375,7 @@ public class CursedWeapon implements INamable } else { - _removeTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new RemoveTask(), _durationLost * 12000L, _durationLost * 12000L); + _removeTask = ThreadPoolManager.scheduleAtFixedRate(new RemoveTask(), _durationLost * 12000L, _durationLost * 12000L); } } @@ -389,7 +389,7 @@ public class CursedWeapon implements INamable // Start the Life Task _endTime = System.currentTimeMillis() + (_duration * 60000L); - _removeTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new RemoveTask(), _durationLost * 12000L, _durationLost * 12000L); + _removeTask = ThreadPoolManager.scheduleAtFixedRate(new RemoveTask(), _durationLost * 12000L, _durationLost * 12000L); return true; } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/DropProtection.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/DropProtection.java index 9147db2c59..1a62714f0e 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/DropProtection.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/DropProtection.java @@ -103,6 +103,6 @@ public class DropProtection implements Runnable throw new NullPointerException("Trying to protect dropped item to null owner"); } - _task = ThreadPoolManager.getInstance().scheduleGeneral(this, PROTECTED_MILLIS_TIME); + _task = ThreadPoolManager.schedule(this, PROTECTED_MILLIS_TIME); } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/Fishing.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/Fishing.java index 1f87ec266a..e9cfd27a75 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/Fishing.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/Fishing.java @@ -220,10 +220,10 @@ public class Fishing _player.rechargeShots(false, false, true); } - _reelInTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _reelInTask = ThreadPoolManager.schedule(() -> { _player.getFishing().reelInWithReward(); - _startFishingTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> _player.getFishing().castLine(), Rnd.get(baitData.getWaitMin(), baitData.getWaitMax())); + _startFishingTask = ThreadPoolManager.schedule(() -> _player.getFishing().castLine(), Rnd.get(baitData.getWaitMin(), baitData.getWaitMax())); }, Rnd.get(baitData.getTimeMin(), baitData.getTimeMax())); _player.stopMove(null); _player.broadcastPacket(new ExFishingStart(_player, -1, baitData.getLevel(), _baitLocation)); diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/L2Clan.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/L2Clan.java index e5efecb547..7b0657bb7e 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/L2Clan.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/L2Clan.java @@ -3127,7 +3127,7 @@ public class L2Clan implements IIdentifiable, INamable _vars = new ClanVariables(getId()); if (Config.CLAN_VARIABLES_STORE_INTERVAL > 0) { - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this::storeVariables, Config.CLAN_VARIABLES_STORE_INTERVAL, Config.CLAN_VARIABLES_STORE_INTERVAL); + ThreadPoolManager.scheduleAtFixedRate(this::storeVariables, Config.CLAN_VARIABLES_STORE_INTERVAL, Config.CLAN_VARIABLES_STORE_INTERVAL); } } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/L2Party.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/L2Party.java index 834811cea4..ca47799cce 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/L2Party.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/L2Party.java @@ -379,7 +379,7 @@ public class L2Party extends AbstractPlayerGroup if (_positionBroadcastTask == null) { - _positionBroadcastTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(() -> + _positionBroadcastTask = ThreadPoolManager.scheduleAtFixedRate(() -> { if (_positionPacket == null) { @@ -1084,7 +1084,7 @@ public class L2Party extends AbstractPlayerGroup } _changeRequestDistributionType = partyDistributionType; _changeDistributionTypeAnswers = new HashSet<>(); - _changeDistributionTypeRequestTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> finishLootRequest(false), PARTY_DISTRIBUTION_TYPE_REQUEST_TIMEOUT.toMillis()); + _changeDistributionTypeRequestTask = ThreadPoolManager.schedule(() -> finishLootRequest(false), PARTY_DISTRIBUTION_TYPE_REQUEST_TIMEOUT.toMillis()); broadcastToPartyMembers(getLeader(), new ExAskModifyPartyLooting(getLeader().getName(), partyDistributionType)); diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/L2Request.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/L2Request.java index c39f47f86e..a65b9b6a50 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/L2Request.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/L2Request.java @@ -123,7 +123,7 @@ public class L2Request { _isRequestor = isRequestor; _isAnswerer = !isRequestor; - ThreadPoolManager.getInstance().scheduleGeneral(() -> clear(), REQUEST_TIMEOUT * 1000); + ThreadPoolManager.schedule(() -> clear(), REQUEST_TIMEOUT * 1000); } /** diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/L2Spawn.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/L2Spawn.java index c62f2adbbe..3ddb0761ac 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/L2Spawn.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/L2Spawn.java @@ -400,7 +400,7 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable // Create a new SpawnTask to launch after the respawn Delay // ClientScheduler.getInstance().scheduleLow(new SpawnTask(npcId), _respawnDelay); - ThreadPoolManager.getInstance().scheduleGeneral(new SpawnTask(oldNpc), hasRespawnRandom() ? Rnd.get(_respawnMinDelay, _respawnMaxDelay) : _respawnMinDelay); + ThreadPoolManager.schedule(new SpawnTask(oldNpc), hasRespawnRandom() ? Rnd.get(_respawnMinDelay, _respawnMaxDelay) : _respawnMinDelay); } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/L2WorldRegion.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/L2WorldRegion.java index f7803399a2..450bb4bda4 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/L2WorldRegion.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/L2WorldRegion.java @@ -215,7 +215,7 @@ public final class L2WorldRegion } // then, set a timer to activate the neighbors - _neighborsTask = ThreadPoolManager.getInstance().scheduleGeneral(new NeighborsTask(true), 1000 * Config.GRID_NEIGHBOR_TURNON_TIME); + _neighborsTask = ThreadPoolManager.schedule(new NeighborsTask(true), 1000 * Config.GRID_NEIGHBOR_TURNON_TIME); } } @@ -235,7 +235,7 @@ public final class L2WorldRegion // start a timer to "suggest" a deactivate to self and neighbors. // suggest means: first check if a neighbor has L2PcInstances in it. If not, deactivate. - _neighborsTask = ThreadPoolManager.getInstance().scheduleGeneral(new NeighborsTask(false), 1000 * Config.GRID_NEIGHBOR_TURNOFF_TIME); + _neighborsTask = ThreadPoolManager.schedule(new NeighborsTask(false), 1000 * Config.GRID_NEIGHBOR_TURNOFF_TIME); } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/MpRewardTask.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/MpRewardTask.java index 32d3f1de5e..cf4458c3a4 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/MpRewardTask.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/MpRewardTask.java @@ -41,7 +41,7 @@ public class MpRewardTask _creature = creature; _count = new AtomicInteger(template.getMpRewardTicks()); _value = calculateBaseValue(npc, creature); - _task = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(this::run, Config.EFFECT_TICK_RATIO, Config.EFFECT_TICK_RATIO); + _task = ThreadPoolManager.scheduleAtFixedRate(this::run, Config.EFFECT_TICK_RATIO, Config.EFFECT_TICK_RATIO); } /** diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/L2Attackable.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/L2Attackable.java index b3d275aea0..6b0565d1c0 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/L2Attackable.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/L2Attackable.java @@ -236,7 +236,7 @@ public class L2Attackable extends L2Npc { _commandChannelTimer = new CommandChannelTimer(this); _commandChannelLastAttack = System.currentTimeMillis(); - ThreadPoolManager.getInstance().scheduleGeneral(_commandChannelTimer, 10000); // check for last attack + ThreadPoolManager.schedule(_commandChannelTimer, 10000); // check for last attack _firstCommandChannelAttacked.broadcastPacket(new CreatureSay(0, ChatType.PARTYROOM_ALL, "", "You have looting rights!")); // TODO: retail msg } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/L2Character.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/L2Character.java index d1c3434468..9fe4844c6c 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/L2Character.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/L2Character.java @@ -1100,7 +1100,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe if (getCurrentMp() < mpConsume) { // If L2PcInstance doesn't have enough MP, stop the attack - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), 1000); + ThreadPoolManager.schedule(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), 1000); sendPacket(SystemMessageId.NOT_ENOUGH_MP); sendPacket(ActionFailed.STATIC_PACKET); return; @@ -1118,7 +1118,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe else { // Cancel the action because the bow can't be re-use at this moment - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), 1000); + ThreadPoolManager.schedule(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), 1000); sendPacket(ActionFailed.STATIC_PACKET); return; } @@ -1222,7 +1222,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe } // Notify AI with EVT_READY_TO_ACT - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), timeAtk); + ThreadPoolManager.schedule(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), timeAtk); } } @@ -1301,7 +1301,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe } // Create a new hit task with Medium priority - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk); + ThreadPoolManager.schedule(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk); // Calculate and set the disable delay of the bow in function of the Attack Speed _disableRangedAttackEndTime = ((sAtk + reuse) / GameTimeController.MILLIS_IN_TICK) + GameTimeController.getInstance().getGameTicks(); @@ -1371,10 +1371,10 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe } // Create a new hit task with Medium priority for hit 1 - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk / 2); + ThreadPoolManager.schedule(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk / 2); // Create a new hit task with Medium priority for hit 2 with a higher delay - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, target, damage2, crit2, miss2, attack.hasSoulshot(), shld2), sAtk); + ThreadPoolManager.schedule(new HitTask(this, target, damage2, crit2, miss2, attack.hasSoulshot(), shld2), sAtk); // Add those hits to the Server-Client packet Attack attack.addHit(target, damage1, miss1, crit1, shld1); @@ -1401,7 +1401,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe damage /= 2; } - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, surroundTarget, damage, crit, miss, attack.hasSoulshot(), shld), sAtk / 2); + ThreadPoolManager.schedule(new HitTask(this, surroundTarget, damage, crit, miss, attack.hasSoulshot(), shld), sAtk / 2); attack.addHit(surroundTarget, damage, miss, crit, shld); miss1 |= miss; } @@ -1421,7 +1421,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe damage /= 2; } - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, surroundTarget, damage, crit, miss, attack.hasSoulshot(), shld), sAtk); + ThreadPoolManager.schedule(new HitTask(this, surroundTarget, damage, crit, miss, attack.hasSoulshot(), shld), sAtk); attack.addHit(surroundTarget, damage, miss, crit, shld); miss2 |= miss; } @@ -1471,7 +1471,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe } // Create a new hit task with Medium priority - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk); + ThreadPoolManager.schedule(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk); // Add this hit to the Server-Client packet Attack attack.addHit(target, damage1, miss1, crit1, shld1); @@ -1495,7 +1495,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe damage = (int) Formulas.calcAutoAttackDamage(this, surroundTarget, 0, shld, crit, attack.hasSoulshot()); } - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, surroundTarget, damage, crit, miss, attack.hasSoulshot(), shld), sAtk); + ThreadPoolManager.schedule(new HitTask(this, surroundTarget, damage, crit, miss, attack.hasSoulshot(), shld), sAtk); attack.addHit(surroundTarget, damage, miss, crit, shld); miss1 |= miss; } @@ -3332,7 +3332,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe if (distFraction > 1) { - ThreadPoolManager.getInstance().executeAi(() -> getAI().notifyEvent(CtrlEvent.EVT_ARRIVED)); + ThreadPoolManager.execute(() -> getAI().notifyEvent(CtrlEvent.EVT_ARRIVED)); return true; } @@ -3773,7 +3773,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe // Create a task to notify the AI that L2Character arrives at a check point of the movement if ((ticksToMove * GameTimeController.MILLIS_IN_TICK) > 3000) { - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_ARRIVED_REVALIDATE), 2000); + ThreadPoolManager.schedule(new NotifyAITask(this, CtrlEvent.EVT_ARRIVED_REVALIDATE), 2000); } // the CtrlEvent.EVT_ARRIVED will be sent when the character will actually arrive @@ -3854,7 +3854,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe // Create a task to notify the AI that L2Character arrives at a check point of the movement if ((ticksToMove * GameTimeController.MILLIS_IN_TICK) > 3000) { - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_ARRIVED_REVALIDATE), 2000); + ThreadPoolManager.schedule(new NotifyAITask(this, CtrlEvent.EVT_ARRIVED_REVALIDATE), 2000); } // the CtrlEvent.EVT_ARRIVED will be sent when the character will actually arrive diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/L2Npc.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/L2Npc.java index f35c9ed391..018b30b595 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/L2Npc.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/L2Npc.java @@ -1216,7 +1216,7 @@ public class L2Npc extends L2Character public void scheduleDespawn(long delay) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { if (!isDecayed()) { diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/L2Vehicle.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/L2Vehicle.java index 6e1c53a7f2..f9904262c1 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/L2Vehicle.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/L2Vehicle.java @@ -87,7 +87,7 @@ public abstract class L2Vehicle extends L2Character { if (_engine != null) { - ThreadPoolManager.getInstance().scheduleGeneral(_engine, delay); + ThreadPoolManager.schedule(_engine, delay); } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2ControllableAirShipInstance.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2ControllableAirShipInstance.java index 642b3eba43..3d61e79b4e 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2ControllableAirShipInstance.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2ControllableAirShipInstance.java @@ -253,8 +253,8 @@ public class L2ControllableAirShipInstance extends L2AirShipInstance public void onSpawn() { super.onSpawn(); - _checkTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new CheckTask(), 60000, 10000); - _consumeFuelTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new ConsumeFuelTask(), 60000, 60000); + _checkTask = ThreadPoolManager.scheduleAtFixedRate(new CheckTask(), 60000, 10000); + _consumeFuelTask = ThreadPoolManager.scheduleAtFixedRate(new ConsumeFuelTask(), 60000, 60000); } @Override @@ -326,7 +326,7 @@ public class L2ControllableAirShipInstance extends L2AirShipInstance if (isSpawned() && isEmpty() && !isInDock()) { // deleteMe() can't be called from CheckTask because task should not cancel itself - ThreadPoolManager.getInstance().executeGeneral(new DecayTask()); + ThreadPoolManager.execute(new DecayTask()); } } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2DecoyInstance.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2DecoyInstance.java index 3e20bde3da..8f14bf5519 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2DecoyInstance.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2DecoyInstance.java @@ -53,8 +53,8 @@ public class L2DecoyInstance extends L2Character _totalLifeTime = totalLifeTime; _timeRemaining = _totalLifeTime; final int skilllevel = getTemplate().getDisplayId() - 13070; - _DecoyLifeTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new DecoyLifetime(getOwner(), this), 1000, 1000); - _HateSpam = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new HateSpam(this, SkillData.getInstance().getSkill(5272, skilllevel)), 2000, 5000); + _DecoyLifeTask = ThreadPoolManager.scheduleAtFixedRate(new DecoyLifetime(getOwner(), this), 1000, 1000); + _HateSpam = ThreadPoolManager.scheduleAtFixedRate(new HateSpam(this, SkillData.getInstance().getSkill(5272, skilllevel)), 2000, 5000); } @Override diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2DoorInstance.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2DoorInstance.java index 76153869d2..7dfa85a48b 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2DoorInstance.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2DoorInstance.java @@ -107,7 +107,7 @@ public final class L2DoorInstance extends L2Character { delay += Rnd.get(getTemplate().getRandomTime()); } - ThreadPoolManager.getInstance().scheduleGeneral(new TimerOpen(), delay * 1000); + ThreadPoolManager.schedule(new TimerOpen(), delay * 1000); } @Override @@ -646,7 +646,7 @@ public final class L2DoorInstance extends L2Character _autoCloseTask = null; oldTask.cancel(false); } - _autoCloseTask = ThreadPoolManager.getInstance().scheduleGeneral(new AutoClose(), getTemplate().getCloseTime() * 1000); + _autoCloseTask = ThreadPoolManager.schedule(new AutoClose(), getTemplate().getCloseTime() * 1000); } class AutoClose implements Runnable @@ -681,7 +681,7 @@ public final class L2DoorInstance extends L2Character { delay += Rnd.get(getTemplate().getRandomTime()); } - ThreadPoolManager.getInstance().scheduleGeneral(this, delay * 1000); + ThreadPoolManager.schedule(this, delay * 1000); } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2FortCommanderInstance.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2FortCommanderInstance.java index cdbc48a84e..56c68106bc 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2FortCommanderInstance.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2FortCommanderInstance.java @@ -145,7 +145,7 @@ public class L2FortCommanderInstance extends L2DefenderInstance { broadcastSay(ChatType.NPC_SHOUT, npcString, npcString.getParamCount() == 1 ? attacker.getName() : null); setCanTalk(false); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleTalkTask(), 10000); + ThreadPoolManager.schedule(new ScheduleTalkTask(), 10000); } } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2PcInstance.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2PcInstance.java index c09f465acf..3b80adc387 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2PcInstance.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2PcInstance.java @@ -818,7 +818,7 @@ public final class L2PcInstance extends L2Playable if (_PvPRegTask == null) { - _PvPRegTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new PvPFlagTask(this), 1000, 1000); + _PvPRegTask = ThreadPoolManager.scheduleAtFixedRate(new PvPFlagTask(this), 1000, 1000); } } @@ -2822,7 +2822,7 @@ public final class L2PcInstance extends L2Playable getAI().setIntention(CtrlIntention.AI_INTENTION_REST); broadcastPacket(new ChangeWaitType(this, ChangeWaitType.WT_SITTING)); // Schedule a sit down task to wait for the animation to finish - ThreadPoolManager.getInstance().scheduleGeneral(new SitDownTask(this), 2500); + ThreadPoolManager.schedule(new SitDownTask(this), 2500); setBlockActions(true); } } @@ -2845,7 +2845,7 @@ public final class L2PcInstance extends L2Playable broadcastPacket(new ChangeWaitType(this, ChangeWaitType.WT_STANDING)); // Schedule a stand up task to wait for the animation to finish - ThreadPoolManager.getInstance().scheduleGeneral(new StandUpTask(this), 2500); + ThreadPoolManager.schedule(new StandUpTask(this), 2500); } } @@ -4302,7 +4302,7 @@ public final class L2PcInstance extends L2Playable } if (Config.GAMEGUARD_ENFORCE) { - ThreadPoolManager.getInstance().scheduleGeneral(new GameGuardCheckTask(this), 30 * 1000); + ThreadPoolManager.schedule(new GameGuardCheckTask(this), 30 * 1000); } } @@ -8514,7 +8514,7 @@ public final class L2PcInstance extends L2Playable _inventoryDisable = val; if (val) { - ThreadPoolManager.getInstance().scheduleGeneral(new InventoryEnableTask(this), 1500); + ThreadPoolManager.schedule(new InventoryEnableTask(this), 1500); } } @@ -9815,7 +9815,7 @@ public final class L2PcInstance extends L2Playable { if (_taskWarnUserTakeBreak == null) { - _taskWarnUserTakeBreak = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new WarnUserTakeBreakTask(this), 3600000, 3600000); + _taskWarnUserTakeBreak = ThreadPoolManager.scheduleAtFixedRate(new WarnUserTakeBreakTask(this), 3600000, 3600000); } } @@ -9841,7 +9841,7 @@ public final class L2PcInstance extends L2Playable { if (_taskRentPet == null) { - _taskRentPet = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new RentPetTask(this), seconds * 1000L, seconds * 1000L); + _taskRentPet = ThreadPoolManager.scheduleAtFixedRate(new RentPetTask(this), seconds * 1000L, seconds * 1000L); } } @@ -9872,7 +9872,7 @@ public final class L2PcInstance extends L2Playable final int timeinwater = (int) getStat().getValue(Stats.BREATH, 60000); sendPacket(new SetupGauge(getObjectId(), 2, timeinwater)); - _taskWater = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new WaterTask(this), timeinwater, 1000); + _taskWater = ThreadPoolManager.scheduleAtFixedRate(new WaterTask(this), timeinwater, 1000); } } @@ -10253,7 +10253,7 @@ public final class L2PcInstance extends L2Playable { if (_teleportWatchdog == null) { - _teleportWatchdog = ThreadPoolManager.getInstance().scheduleGeneral(new TeleportWatchdogTask(this), Config.TELEPORT_WATCHDOG_TIMEOUT * 1000); + _teleportWatchdog = ThreadPoolManager.schedule(new TeleportWatchdogTask(this), Config.TELEPORT_WATCHDOG_TIMEOUT * 1000); } } } @@ -11143,7 +11143,7 @@ public final class L2PcInstance extends L2Playable } if (_fameTask == null) { - _fameTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FameTask(this, fameFixRate), delay, delay); + _fameTask = ThreadPoolManager.scheduleAtFixedRate(new FameTask(this, fameFixRate), delay, delay); } } @@ -11263,7 +11263,7 @@ public final class L2PcInstance extends L2Playable _soulTask.cancel(false); _soulTask = null; } - _soulTask = ThreadPoolManager.getInstance().scheduleGeneral(new ResetSoulsTask(this), 600000); + _soulTask = ThreadPoolManager.schedule(new ResetSoulsTask(this), 600000); } @@ -11606,7 +11606,7 @@ public final class L2PcInstance extends L2Playable sendPacket(new SetupGauge(3, (getCurrentFeed() * 10000) / getFeedConsume(), (getMaxFeed() * 10000) / getFeedConsume())); if (!isDead()) { - _mountFeedTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new PetFeedTask(this), 10000, 10000); + _mountFeedTask = ThreadPoolManager.scheduleAtFixedRate(new PetFeedTask(this), 10000, 10000); } } else if (_canFeed) @@ -11616,7 +11616,7 @@ public final class L2PcInstance extends L2Playable sendPacket(sg); if (!isDead()) { - _mountFeedTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new PetFeedTask(this), 10000, 10000); + _mountFeedTask = ThreadPoolManager.scheduleAtFixedRate(new PetFeedTask(this), 10000, 10000); } } } @@ -11693,7 +11693,7 @@ public final class L2PcInstance extends L2Playable public void enteredNoLanding(int delay) { - _dismountTask = ThreadPoolManager.getInstance().scheduleGeneral(new DismountTask(this), delay * 1000); + _dismountTask = ThreadPoolManager.schedule(new DismountTask(this), delay * 1000); } public void exitedNoLanding() @@ -11814,7 +11814,7 @@ public final class L2PcInstance extends L2Playable _chargeTask.cancel(false); _chargeTask = null; } - _chargeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ResetChargesTask(this), 600000); + _chargeTask = ThreadPoolManager.schedule(new ResetChargesTask(this), 600000); } /** @@ -12879,7 +12879,7 @@ public final class L2PcInstance extends L2Playable public void startRecoGiveTask() { // Create task to give new recommendations - _recoGiveTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new RecoGiveTask(this), 7200000, 3600000); + _recoGiveTask = ThreadPoolManager.scheduleAtFixedRate(new RecoGiveTask(this), 7200000, 3600000); // Store new data storeRecommendations(); @@ -13807,7 +13807,7 @@ public final class L2PcInstance extends L2Playable stopOnlineTimeUpdateTask(); } - _onlineTimeUpdateTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this::updateOnlineTime, 60 * 1000L, 60 * 1000L); + _onlineTimeUpdateTask = ThreadPoolManager.scheduleAtFixedRate(this::updateOnlineTime, 60 * 1000L, 60 * 1000L); } private void updateOnlineTime() diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2PetInstance.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2PetInstance.java index 026d13c866..9b9c9b794d 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2PetInstance.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2PetInstance.java @@ -1130,7 +1130,7 @@ public class L2PetInstance extends L2Summon stopFeed(); if (!isDead() && (getOwner().getPet() == this)) { - _feedTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FeedTask(), 10000, 10000); + _feedTask = ThreadPoolManager.scheduleAtFixedRate(new FeedTask(), 10000, 10000); } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2RaceManagerInstance.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2RaceManagerInstance.java index 56e09123e5..9896791a73 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2RaceManagerInstance.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2RaceManagerInstance.java @@ -106,27 +106,26 @@ public class L2RaceManagerInstance extends L2Npc _managers = new CopyOnWriteArrayList<>(); - final ThreadPoolManager s = ThreadPoolManager.getInstance(); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKETS_ARE_NOW_AVAILABLE_FOR_MONSTER_RACE_S1), 0, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.NOW_SELLING_TICKETS_FOR_MONSTER_RACE_S1), 30 * SECOND, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKETS_ARE_NOW_AVAILABLE_FOR_MONSTER_RACE_S1), MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.NOW_SELLING_TICKETS_FOR_MONSTER_RACE_S1), MINUTE + (30 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 2 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 3 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 4 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 5 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 6 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKETS_SALES_ARE_CLOSED_FOR_MONSTER_RACE_S1_ODDS_ARE_POSTED), 7 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S2_WILL_BEGIN_IN_S1_MINUTE_S), 7 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S2_WILL_BEGIN_IN_S1_MINUTE_S), 8 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S1_WILL_BEGIN_IN_30_SECONDS), (8 * MINUTE) + (30 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S1_IS_ABOUT_TO_BEGIN_COUNTDOWN_IN_FIVE_SECONDS), (8 * MINUTE) + (50 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (55 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (56 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (57 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (58 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (59 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.THEY_RE_OFF), 9 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKETS_ARE_NOW_AVAILABLE_FOR_MONSTER_RACE_S1), 0, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.NOW_SELLING_TICKETS_FOR_MONSTER_RACE_S1), 30 * SECOND, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKETS_ARE_NOW_AVAILABLE_FOR_MONSTER_RACE_S1), MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.NOW_SELLING_TICKETS_FOR_MONSTER_RACE_S1), MINUTE + (30 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 2 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 3 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 4 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 5 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 6 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKETS_SALES_ARE_CLOSED_FOR_MONSTER_RACE_S1_ODDS_ARE_POSTED), 7 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S2_WILL_BEGIN_IN_S1_MINUTE_S), 7 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S2_WILL_BEGIN_IN_S1_MINUTE_S), 8 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S1_WILL_BEGIN_IN_30_SECONDS), (8 * MINUTE) + (30 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S1_IS_ABOUT_TO_BEGIN_COUNTDOWN_IN_FIVE_SECONDS), (8 * MINUTE) + (50 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (55 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (56 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (57 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (58 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (59 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.THEY_RE_OFF), 9 * MINUTE, 10 * MINUTE); } _managers.add(this); } @@ -244,7 +243,7 @@ public class L2RaceManagerInstance extends L2Npc _packet = new MonRaceInfo(_codes[1][0], _codes[1][1], race.getMonsters(), race.getSpeeds()); sendMonsterInfo(); - ThreadPoolManager.getInstance().scheduleGeneral(new RunRace(), 5000); + ThreadPoolManager.schedule(new RunRace(), 5000); } else { @@ -549,7 +548,7 @@ public class L2RaceManagerInstance extends L2Npc { _packet = new MonRaceInfo(_codes[2][0], _codes[2][1], MonsterRace.getInstance().getMonsters(), MonsterRace.getInstance().getSpeeds()); sendMonsterInfo(); - ThreadPoolManager.getInstance().scheduleGeneral(new RunEnd(), 30000); + ThreadPoolManager.schedule(new RunEnd(), 30000); } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2RaidBossInstance.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2RaidBossInstance.java index 408df2d07e..b2a9629352 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2RaidBossInstance.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2RaidBossInstance.java @@ -72,7 +72,7 @@ public class L2RaidBossInstance extends L2MonsterInstance @Override protected void startMaintenanceTask() { - _maintenanceTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(() -> checkAndReturnToSpawn(), 60000, getMaintenanceInterval() + Rnd.get(5000)); + _maintenanceTask = ThreadPoolManager.scheduleAtFixedRate(() -> checkAndReturnToSpawn(), 60000, getMaintenanceInterval() + Rnd.get(5000)); } protected void checkAndReturnToSpawn() diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2ServitorInstance.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2ServitorInstance.java index 0a240610de..dc45e82daa 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2ServitorInstance.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2ServitorInstance.java @@ -85,7 +85,7 @@ public class L2ServitorInstance extends L2Summon implements Runnable super.onSpawn(); if ((_lifeTime > 0) && (_summonLifeTask == null)) { - _summonLifeTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this, 0, 5000); + _summonLifeTask = ThreadPoolManager.scheduleAtFixedRate(this, 0, 5000); } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2SiegeFlagInstance.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2SiegeFlagInstance.java index 36f948d921..eb169af1ce 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2SiegeFlagInstance.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2SiegeFlagInstance.java @@ -163,7 +163,7 @@ public class L2SiegeFlagInstance extends L2Npc // send warning to owners of headquarters that theirs base is under attack _clan.broadcastToOnlineMembers(SystemMessage.getSystemMessage(SystemMessageId.YOUR_BASE_IS_BEING_ATTACKED)); setCanTalk(false); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleTalkTask(), 20000); + ThreadPoolManager.schedule(new ScheduleTalkTask(), 20000); } } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2TamedBeastInstance.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2TamedBeastInstance.java index 6ef311e1a9..0a04416d20 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2TamedBeastInstance.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2TamedBeastInstance.java @@ -153,7 +153,7 @@ public final class L2TamedBeastInstance extends L2FeedableBeastInstance { _durationCheckTask.cancel(true); } - _durationCheckTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new CheckDuration(this), DURATION_CHECK_INTERVAL, DURATION_CHECK_INTERVAL); + _durationCheckTask = ThreadPoolManager.scheduleAtFixedRate(new CheckDuration(this), DURATION_CHECK_INTERVAL, DURATION_CHECK_INTERVAL); } } @@ -217,10 +217,10 @@ public final class L2TamedBeastInstance extends L2FeedableBeastInstance int delay = 100; for (Skill skill : _beastSkills) { - ThreadPoolManager.getInstance().scheduleGeneral(new buffCast(skill), delay); + ThreadPoolManager.schedule(new buffCast(skill), delay); delay += (100 + skill.getHitTime()); } - ThreadPoolManager.getInstance().scheduleGeneral(new buffCast(null), delay); + ThreadPoolManager.schedule(new buffCast(null), delay); } private class buffCast implements Runnable @@ -284,7 +284,7 @@ public final class L2TamedBeastInstance extends L2FeedableBeastInstance { _buffTask.cancel(true); } - _buffTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new CheckOwnerBuffs(this, totalBuffsAvailable), BUFF_INTERVAL, BUFF_INTERVAL); + _buffTask = ThreadPoolManager.scheduleAtFixedRate(new CheckOwnerBuffs(this, totalBuffsAvailable), BUFF_INTERVAL, BUFF_INTERVAL); } } else diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2TrapInstance.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2TrapInstance.java index c4ab166c6d..6ae55f616d 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2TrapInstance.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/instance/L2TrapInstance.java @@ -77,7 +77,7 @@ public final class L2TrapInstance extends L2Npc _remainingTime = _lifeTime; if (_skill != null) { - _trapTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new TrapTask(this), TICK, TICK); + _trapTask = ThreadPoolManager.scheduleAtFixedRate(new TrapTask(this), TICK, TICK); } } @@ -341,7 +341,7 @@ public final class L2TrapInstance extends L2Npc EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); - ThreadPoolManager.getInstance().scheduleGeneral(new TrapTriggerTask(this), 500); + ThreadPoolManager.schedule(new TrapTriggerTask(this), 500); } public void unSummon() diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/request/AbstractRequest.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/request/AbstractRequest.java index b7f9e2c67c..7950d61315 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/request/AbstractRequest.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/request/AbstractRequest.java @@ -55,7 +55,7 @@ public abstract class AbstractRequest public void scheduleTimeout(long delay) { - _timeOutTask = ThreadPoolManager.getInstance().scheduleGeneral(this::onTimeout, delay); + _timeOutTask = ThreadPoolManager.schedule(this::onTimeout, delay); } public boolean isTimeout() diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/status/CharStatus.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/status/CharStatus.java index 09073aa317..53571ee400 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/status/CharStatus.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/status/CharStatus.java @@ -216,7 +216,7 @@ public class CharStatus final int period = Formulas.getRegeneratePeriod(getActiveChar()); // Create the HP/MP/CP Regeneration task - _regTask = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new RegenTask(), period, period); + _regTask = ThreadPoolManager.scheduleAtFixedRate(new RegenTask(), period, period); } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/tasks/attackable/CommandChannelTimer.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/tasks/attackable/CommandChannelTimer.java index 87cc5f4937..6f37725f33 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/tasks/attackable/CommandChannelTimer.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/tasks/attackable/CommandChannelTimer.java @@ -48,7 +48,7 @@ public final class CommandChannelTimer implements Runnable } else { - ThreadPoolManager.getInstance().scheduleGeneral(this, 10000); // 10sec + ThreadPoolManager.schedule(this, 10000); // 10sec } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/tasks/npc/RandomAnimationTask.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/tasks/npc/RandomAnimationTask.java index 68c814f0a2..a6ffb508f1 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/tasks/npc/RandomAnimationTask.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/tasks/npc/RandomAnimationTask.java @@ -91,7 +91,7 @@ public class RandomAnimationTask implements Runnable final int interval = Rnd.get(minWait, maxWait) * 1000; // Create a RandomAnimation Task that will be launched after the calculated delay - ThreadPoolManager.getInstance().scheduleGeneral(this, interval); + ThreadPoolManager.schedule(this, interval); } /** diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/tasks/npc/trap/TrapTriggerTask.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/tasks/npc/trap/TrapTriggerTask.java index 6fa1c2f1dd..b15e938ffe 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/tasks/npc/trap/TrapTriggerTask.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/tasks/npc/trap/TrapTriggerTask.java @@ -38,7 +38,7 @@ public class TrapTriggerTask implements Runnable try { _trap.doCast(_trap.getSkill()); - ThreadPoolManager.getInstance().scheduleGeneral(new TrapUnsummonTask(_trap), _trap.getSkill().getHitTime() + 300); + ThreadPoolManager.schedule(new TrapUnsummonTask(_trap), _trap.getSkill().getHitTime() + 300); } catch (Exception e) { diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/tasks/player/FlyMoveStartTask.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/tasks/player/FlyMoveStartTask.java index 1f789e0c09..4dff07f0c4 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/tasks/player/FlyMoveStartTask.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/actor/tasks/player/FlyMoveStartTask.java @@ -51,7 +51,7 @@ public class FlyMoveStartTask implements Runnable if (!_player.hasRequest(SayuneRequest.class)) { _player.sendPacket(ExNotifyFlyMoveStart.STATIC_PACKET); - ThreadPoolManager.getInstance().scheduleGeneral(this, 1000L); + ThreadPoolManager.schedule(this, 1000L); } } } \ No newline at end of file diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/announce/AutoAnnouncement.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/announce/AutoAnnouncement.java index 931905492d..7d2ed5035b 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/announce/AutoAnnouncement.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/announce/AutoAnnouncement.java @@ -160,7 +160,7 @@ public final class AutoAnnouncement extends Announcement implements Runnable _task.cancel(false); } _currentState = _repeat; - _task = ThreadPoolManager.getInstance().scheduleGeneral(this, _initial); + _task = ThreadPoolManager.schedule(this, _initial); } @Override @@ -178,7 +178,7 @@ public final class AutoAnnouncement extends Announcement implements Runnable _currentState--; } - _task = ThreadPoolManager.getInstance().scheduleGeneral(this, _delay); + _task = ThreadPoolManager.schedule(this, _delay); } } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/buylist/Product.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/buylist/Product.java index e5f383ff32..10242424c7 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/buylist/Product.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/buylist/Product.java @@ -119,7 +119,7 @@ public final class Product } if ((_restockTask == null) || _restockTask.isDone()) { - _restockTask = ThreadPoolManager.getInstance().scheduleGeneral(this::restock, getRestockDelay()); + _restockTask = ThreadPoolManager.schedule(this::restock, getRestockDelay()); } final boolean result = _count.addAndGet(-val) >= 0; save(); @@ -136,7 +136,7 @@ public final class Product final long remainTime = nextRestockTime - System.currentTimeMillis(); if (remainTime > 0) { - _restockTask = ThreadPoolManager.getInstance().scheduleGeneral(this::restock, remainTime); + _restockTask = ThreadPoolManager.schedule(this::restock, remainTime); } else { diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/cubic/CubicInstance.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/cubic/CubicInstance.java index ada76382ec..c92709158b 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/cubic/CubicInstance.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/cubic/CubicInstance.java @@ -52,8 +52,8 @@ public class CubicInstance private void activate() { - _skillUseTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this::tryToUseSkill, 0, _template.getDelay() * 1000); - _expireTask = ThreadPoolManager.getInstance().scheduleAi(this::deactivate, _template.getDuration() * 1000); + _skillUseTask = ThreadPoolManager.scheduleAtFixedRate(this::tryToUseSkill, 0, _template.getDelay() * 1000); + _expireTask = ThreadPoolManager.schedule(this::deactivate, _template.getDuration() * 1000); } public void deactivate() diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/BlockCheckerEngine.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/BlockCheckerEngine.java index e58d229768..c161d20dac 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/BlockCheckerEngine.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/BlockCheckerEngine.java @@ -306,7 +306,7 @@ public final class BlockCheckerEngine _abnormalEnd = true; - ThreadPoolManager.getInstance().executeGeneral(new EndEvent()); + ThreadPoolManager.execute(new EndEvent()); if (Config.DEBUG) { @@ -429,7 +429,7 @@ public final class BlockCheckerEngine } _isStarted = true; // Spawn the blocks - ThreadPoolManager.getInstance().executeGeneral(new SpawnRound(16, 1)); + ThreadPoolManager.execute(new SpawnRound(16, 1)); // Start up player parameters setUpPlayers(); // Set the started time @@ -463,15 +463,15 @@ public final class BlockCheckerEngine { case 1: // Schedule second spawn round - _task = ThreadPoolManager.getInstance().scheduleGeneral(new SpawnRound(20, 2), 60000); + _task = ThreadPoolManager.schedule(new SpawnRound(20, 2), 60000); break; case 2: // Schedule third spawn round - _task = ThreadPoolManager.getInstance().scheduleGeneral(new SpawnRound(14, 3), 60000); + _task = ThreadPoolManager.schedule(new SpawnRound(14, 3), 60000); break; case 3: // Schedule Event End Count Down - _task = ThreadPoolManager.getInstance().scheduleGeneral(new EndEvent(), 180000); + _task = ThreadPoolManager.schedule(new EndEvent(), 180000); break; } // random % 2, if == 0 will spawn a red block @@ -530,7 +530,7 @@ public final class BlockCheckerEngine SpawnTable.getInstance().addNewSpawn(girlSpawn, false); girlSpawn.init(); // Schedule his deletion after 9 secs of spawn - ThreadPoolManager.getInstance().scheduleGeneral(new CarryingGirlUnspawn(girlSpawn), 9000); + ThreadPoolManager.schedule(new CarryingGirlUnspawn(girlSpawn), 9000); } catch (Exception e) { @@ -573,7 +573,7 @@ public final class BlockCheckerEngine /* * private class CountDown implements Runnable { - * @Override public void run() { _holder.broadCastPacketToTeam(SystemMessage.getSystemMessage(SystemMessageId.BLOCK_CHECKER_WILL_END_IN_5_SECONDS)); ThreadPoolManager.getInstance().scheduleGeneral(new EndEvent(), 5000); } } + * @Override public void run() { _holder.broadCastPacketToTeam(SystemMessage.getSystemMessage(SystemMessageId.BLOCK_CHECKER_WILL_END_IN_5_SECONDS)); ThreadPoolManager.schedule(new EndEvent(), 5000); } } */ /** diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/Castle.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/Castle.java index 2ef599c33b..b657df5013 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/Castle.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/Castle.java @@ -166,11 +166,11 @@ public final class Castle extends AbstractResidence final long currentTime = System.currentTimeMillis(); if (_endDate > currentTime) { - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(cwh), _endDate - currentTime); + ThreadPoolManager.schedule(new FunctionTask(cwh), _endDate - currentTime); } else { - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(cwh), 0); + ThreadPoolManager.schedule(new FunctionTask(cwh), 0); } } @@ -204,7 +204,7 @@ public final class Castle extends AbstractResidence { ClanTable.getInstance().getClan(getOwnerId()).getWarehouse().destroyItemByItemId("CS_function_fee", Inventory.ADENA_ID, fee, null, null); } - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(true), getRate()); + ThreadPoolManager.schedule(new FunctionTask(true), getRate()); } else { diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/ClanHall.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/ClanHall.java index e8b2e61692..2cfbef3323 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/ClanHall.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/ClanHall.java @@ -263,7 +263,7 @@ public final class ClanHall extends AbstractResidence final int failDays = getCostFailDay(); final long time = failDays > 0 ? (failDays > 8 ? Instant.now().toEpochMilli() : Instant.ofEpochMilli(getPaidUntil()).plus(Duration.ofDays(failDays + 1)).toEpochMilli()) : getPaidUntil(); - _checkPaymentTask = ThreadPoolManager.getInstance().scheduleGeneral(new CheckPaymentTask(), time - System.currentTimeMillis()); + _checkPaymentTask = ThreadPoolManager.schedule(new CheckPaymentTask(), time - System.currentTimeMillis()); } else { @@ -363,7 +363,7 @@ public final class ClanHall extends AbstractResidence } else { - _checkPaymentTask = ThreadPoolManager.getInstance().scheduleGeneral(new CheckPaymentTask(), 1, TimeUnit.DAYS); + _checkPaymentTask = ThreadPoolManager.schedule(new CheckPaymentTask(), 24 * 60 * 60 * 1000); // 1 day final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.PAYMENT_FOR_YOUR_CLAN_HALL_HAS_NOT_BEEN_MADE_PLEASE_MAKE_PAYMENT_TO_YOUR_CLAN_WAREHOUSE_BY_S1_TOMORROW); sm.addInt(getLease()); clan.broadcastToOnlineMembers(sm); @@ -373,7 +373,7 @@ public final class ClanHall extends AbstractResidence { clan.getWarehouse().destroyItem("Clan Hall Lease", Inventory.ADENA_ID, getLease(), null, null); setPaidUntil(Instant.ofEpochMilli(getPaidUntil()).plus(Duration.ofDays(7)).toEpochMilli()); - _checkPaymentTask = ThreadPoolManager.getInstance().scheduleGeneral(new CheckPaymentTask(), getPaidUntil() - System.currentTimeMillis()); + _checkPaymentTask = ThreadPoolManager.schedule(new CheckPaymentTask(), getPaidUntil() - System.currentTimeMillis()); updateDB(); } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/Duel.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/Duel.java index c8cfdbc0a1..6879c073af 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/Duel.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/Duel.java @@ -99,7 +99,7 @@ public class Duel broadcastToTeam2(sm); } // Schedule duel start - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartDuelTask(this), 3000); + ThreadPoolManager.schedule(new ScheduleStartDuelTask(this), 3000); } public static class PlayerCondition @@ -207,14 +207,14 @@ public class Duel } case Continue: { - ThreadPoolManager.getInstance().scheduleGeneral(this, 1000); + ThreadPoolManager.schedule(this, 1000); break; } default: { setFinished(true); playKneelAnimation(); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndDuelTask(_duel, _duel.checkEndDuelCondition()), 5000); + ThreadPoolManager.schedule(new ScheduleEndDuelTask(_duel, _duel.checkEndDuelCondition()), 5000); if (getDueldInstance() != null) { getDueldInstance().destroy(); @@ -255,11 +255,11 @@ public class Duel _duel.teleportPlayers(); // give players 20 seconds to complete teleport and get ready (its ought to be 30 on offical..) - ThreadPoolManager.getInstance().scheduleGeneral(this, 20000); + ThreadPoolManager.schedule(this, 20000); } else if (count > 0) // duel not started yet - continue countdown { - ThreadPoolManager.getInstance().scheduleGeneral(this, 1000); + ThreadPoolManager.schedule(this, 1000); } else { @@ -436,7 +436,7 @@ public class Duel broadcastToTeam2(B04_S01); // start duelling task - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleDuelTask(this), 1000); + ThreadPoolManager.schedule(new ScheduleDuelTask(this), 1000); } /** diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/Fort.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/Fort.java index 1aa9d4cc83..d892c13f8c 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/Fort.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/Fort.java @@ -166,11 +166,11 @@ public final class Fort extends AbstractResidence final long currentTime = System.currentTimeMillis(); if (_endDate > currentTime) { - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(cwh), _endDate - currentTime); + ThreadPoolManager.schedule(new FunctionTask(cwh), _endDate - currentTime); } else { - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(cwh), 0); + ThreadPoolManager.schedule(new FunctionTask(cwh), 0); } } @@ -204,7 +204,7 @@ public final class Fort extends AbstractResidence { getOwnerClan().getWarehouse().destroyItemByItemId("CS_function_fee", Inventory.ADENA_ID, fee, null, null); } - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(true), getRate()); + ThreadPoolManager.schedule(new FunctionTask(true), getRate()); } else { @@ -273,7 +273,7 @@ public final class Fort extends AbstractResidence public void endOfSiege(L2Clan clan) { - ThreadPoolManager.getInstance().executeAi(new endFortressSiege(this, clan)); + ThreadPoolManager.execute(new endFortressSiege(this, clan)); } /** @@ -594,15 +594,15 @@ public final class Fort extends AbstractResidence initial = (Config.FS_UPDATE_FRQ * 60000L) - initial; if ((Config.FS_MAX_OWN_TIME <= 0) || (getOwnedTime() < (Config.FS_MAX_OWN_TIME * 3600))) { - _FortUpdater[0] = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FortUpdater(this, clan, runCount, UpdaterType.PERIODIC_UPDATE), initial, Config.FS_UPDATE_FRQ * 60000L); // Schedule owner tasks to start running + _FortUpdater[0] = ThreadPoolManager.scheduleAtFixedRate(new FortUpdater(this, clan, runCount, UpdaterType.PERIODIC_UPDATE), initial, Config.FS_UPDATE_FRQ * 60000L); // Schedule owner tasks to start running if (Config.FS_MAX_OWN_TIME > 0) { - _FortUpdater[1] = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FortUpdater(this, clan, runCount, UpdaterType.MAX_OWN_TIME), 3600000, 3600000); // Schedule owner tasks to remove owener + _FortUpdater[1] = ThreadPoolManager.scheduleAtFixedRate(new FortUpdater(this, clan, runCount, UpdaterType.MAX_OWN_TIME), 3600000, 3600000); // Schedule owner tasks to remove owener } } else { - _FortUpdater[1] = ThreadPoolManager.getInstance().scheduleGeneral(new FortUpdater(this, clan, 0, UpdaterType.MAX_OWN_TIME), 60000); // Schedule owner tasks to remove owner + _FortUpdater[1] = ThreadPoolManager.schedule(new FortUpdater(this, clan, 0, UpdaterType.MAX_OWN_TIME), 60000); // Schedule owner tasks to remove owner } } else @@ -836,10 +836,10 @@ public final class Fort extends AbstractResidence { _FortUpdater[1].cancel(false); } - _FortUpdater[0] = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FortUpdater(this, clan, 0, UpdaterType.PERIODIC_UPDATE), Config.FS_UPDATE_FRQ * 60000L, Config.FS_UPDATE_FRQ * 60000L); // Schedule owner tasks to start running + _FortUpdater[0] = ThreadPoolManager.scheduleAtFixedRate(new FortUpdater(this, clan, 0, UpdaterType.PERIODIC_UPDATE), Config.FS_UPDATE_FRQ * 60000L, Config.FS_UPDATE_FRQ * 60000L); // Schedule owner tasks to start running if (Config.FS_MAX_OWN_TIME > 0) { - _FortUpdater[1] = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FortUpdater(this, clan, 0, UpdaterType.MAX_OWN_TIME), 3600000, 3600000); // Schedule owner tasks to remove owener + _FortUpdater[1] = ThreadPoolManager.scheduleAtFixedRate(new FortUpdater(this, clan, 0, UpdaterType.MAX_OWN_TIME), 3600000, 3600000); // Schedule owner tasks to remove owener } } else diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/FortSiege.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/FortSiege.java index c3c80f4589..840cacddb2 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/FortSiege.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/FortSiege.java @@ -111,7 +111,7 @@ public class FortSiege implements Siegable final SystemMessage sm; if (_time == 3600) // 1hr remains { - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(600), 3000000); // Prepare task for 10 minutes left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(600), 3000000); // Prepare task for 10 minutes left. } else if (_time == 600) // 10min remains { @@ -119,49 +119,49 @@ public class FortSiege implements Siegable sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(10); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(300), 300000); // Prepare task for 5 minutes left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(300), 300000); // Prepare task for 5 minutes left. } else if (_time == 300) // 5min remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(5); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(60), 240000); // Prepare task for 1 minute left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(60), 240000); // Prepare task for 1 minute left. } else if (_time == 60) // 1min remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(1); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(30), 30000); // Prepare task for 30 seconds left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(30), 30000); // Prepare task for 30 seconds left. } else if (_time == 30) // 30seconds remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_SECOND_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(30); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(10), 20000); // Prepare task for 10 seconds left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(10), 20000); // Prepare task for 10 seconds left. } else if (_time == 10) // 10seconds remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_SECOND_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(10); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(5), 5000); // Prepare task for 5 seconds left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(5), 5000); // Prepare task for 5 seconds left. } else if (_time == 5) // 5seconds remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_SECOND_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(5); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(1), 4000); // Prepare task for 1 seconds left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(1), 4000); // Prepare task for 1 seconds left. } else if (_time == 1) // 1seconds remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_SECOND_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(1); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(0), 1000); // Prepare task start siege. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(0), 1000); // Prepare task start siege. } else if (_time == 0)// start siege { @@ -274,7 +274,7 @@ public class FortSiege implements Siegable unspawnSiegeGuard(); // Remove all spawned siege guard from this fort getFort().resetDoors(); // Respawn door to fort - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleSuspiciousMerchantSpawn(), FortSiegeManager.getInstance().getSuspiciousMerchantRespawnDelay() * 60 * 1000L); // Prepare 3hr task for suspicious merchant respawn + ThreadPoolManager.schedule(new ScheduleSuspiciousMerchantSpawn(), FortSiegeManager.getInstance().getSuspiciousMerchantRespawnDelay() * 60 * 1000L); // Prepare 3hr task for suspicious merchant respawn setSiegeDateTime(true); // store suspicious merchant spawn in DB if (_siegeEnd != null) @@ -336,7 +336,7 @@ public class FortSiege implements Siegable getFort().getZone().updateZoneStatusForCharactersInside(); // Schedule a task to prepare auto siege end - _siegeEnd = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(), FortSiegeManager.getInstance().getSiegeLength() * 60 * 1000L); // Prepare auto end task + _siegeEnd = ThreadPoolManager.schedule(new ScheduleEndSiegeTask(), FortSiegeManager.getInstance().getSiegeLength() * 60 * 1000L); // Prepare auto end task final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THE_FORTRESS_BATTLE_S1_HAS_BEGUN); sm.addCastleId(getFort().getResidenceId()); @@ -672,7 +672,7 @@ public class FortSiege implements Siegable else if (_siegeRestore == null) { getFort().getSiege().announceToPlayer(SystemMessage.getSystemMessage(SystemMessageId.THE_BARRACKS_HAVE_BEEN_SEIZED)); - _siegeRestore = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleSiegeRestore(), FortSiegeManager.getInstance().getCountDownLength() * 60 * 1000L); + _siegeRestore = ThreadPoolManager.schedule(new ScheduleSiegeRestore(), FortSiegeManager.getInstance().getCountDownLength() * 60 * 1000L); } else { @@ -830,7 +830,7 @@ public class FortSiege implements Siegable saveFortSiege(); clearSiegeClan(); // remove all clans // spawn suspicious merchant immediately - ThreadPoolManager.getInstance().executeGeneral(new ScheduleSuspiciousMerchantSpawn()); + ThreadPoolManager.execute(new ScheduleSuspiciousMerchantSpawn()); } else { @@ -838,33 +838,33 @@ public class FortSiege implements Siegable if (getAttackerClans().isEmpty()) { // no attackers - waiting for suspicious merchant spawn - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleSuspiciousMerchantSpawn(), delay); + ThreadPoolManager.schedule(new ScheduleSuspiciousMerchantSpawn(), delay); } else { // preparing start siege task if (delay > 3600000) // more than hour, how this can happens ? spawn suspicious merchant { - ThreadPoolManager.getInstance().executeGeneral(new ScheduleSuspiciousMerchantSpawn()); - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(3600), delay - 3600000); + ThreadPoolManager.execute(new ScheduleSuspiciousMerchantSpawn()); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(3600), delay - 3600000); } if (delay > 600000) // more than 10 min, spawn suspicious merchant { - ThreadPoolManager.getInstance().executeGeneral(new ScheduleSuspiciousMerchantSpawn()); - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(600), delay - 600000); + ThreadPoolManager.execute(new ScheduleSuspiciousMerchantSpawn()); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(600), delay - 600000); } else if (delay > 300000) { - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(300), delay - 300000); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(300), delay - 300000); } else if (delay > 60000) { - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(60), delay - 60000); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(60), delay - 60000); } else { // lower than 1 min, set to 1 min - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(60), 0); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(60), 0); } _log.info(getClass().getSimpleName() + ": Siege of " + getFort().getName() + " fort: " + getFort().getSiegeDate().getTime()); @@ -894,7 +894,7 @@ public class FortSiege implements Siegable } // Execute siege auto start - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(3600), 0); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(3600), 0); } /** diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/Siege.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/Siege.java index a9ead559aa..4d1d933e3a 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/Siege.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/entity/Siege.java @@ -103,35 +103,35 @@ public class Siege implements Siegable final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_HOUR_S_UNTIL_CASTLE_SIEGE_CONCLUSION); sm.addInt(2); announceToPlayer(sm, true); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 3600000); // Prepare task for 1 hr left. + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 3600000); // Prepare task for 1 hr left. } else if ((timeRemaining <= 3600000) && (timeRemaining > 600000)) { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_CASTLE_SIEGE_CONCLUSION); sm.addInt((int) timeRemaining / 60000); announceToPlayer(sm, true); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 600000); // Prepare task for 10 minute left. + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 600000); // Prepare task for 10 minute left. } else if ((timeRemaining <= 600000) && (timeRemaining > 300000)) { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_CASTLE_SIEGE_CONCLUSION); sm.addInt((int) timeRemaining / 60000); announceToPlayer(sm, true); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 300000); // Prepare task for 5 minute left. + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 300000); // Prepare task for 5 minute left. } else if ((timeRemaining <= 300000) && (timeRemaining > 10000)) { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_CASTLE_SIEGE_CONCLUSION); sm.addInt((int) timeRemaining / 60000); announceToPlayer(sm, true); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 10000); // Prepare task for 10 seconds count down + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 10000); // Prepare task for 10 seconds count down } else if ((timeRemaining <= 10000) && (timeRemaining > 0)) { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THIS_CASTLE_SIEGE_WILL_END_IN_S1_SECOND_S); sm.addInt((int) timeRemaining / 1000); announceToPlayer(sm, true); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(_castleInst), timeRemaining); // Prepare task for second count down + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(_castleInst), timeRemaining); // Prepare task for second count down } else { @@ -170,7 +170,7 @@ public class Siege implements Siegable final long regTimeRemaining = getTimeRegistrationOverDate().getTimeInMillis() - Calendar.getInstance().getTimeInMillis(); if (regTimeRemaining > 0) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), regTimeRemaining); + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), regTimeRemaining); return; } endTimeRegistration(true); @@ -179,7 +179,7 @@ public class Siege implements Siegable final long timeRemaining = getSiegeDate().getTimeInMillis() - Calendar.getInstance().getTimeInMillis(); if (timeRemaining > 86400000) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 86400000); // Prepare task for 24 before siege start to end registration + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 86400000); // Prepare task for 24 before siege start to end registration } else if ((timeRemaining <= 86400000) && (timeRemaining > 13600000)) { @@ -188,23 +188,23 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(sm); _isRegistrationOver = true; clearSiegeWaitingClan(); - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 13600000); // Prepare task for 1 hr left before siege start. + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 13600000); // Prepare task for 1 hr left before siege start. } else if ((timeRemaining <= 13600000) && (timeRemaining > 600000)) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 600000); // Prepare task for 10 minute left. + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 600000); // Prepare task for 10 minute left. } else if ((timeRemaining <= 600000) && (timeRemaining > 300000)) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 300000); // Prepare task for 5 minute left. + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 300000); // Prepare task for 5 minute left. } else if ((timeRemaining <= 300000) && (timeRemaining > 10000)) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 10000); // Prepare task for 10 seconds count down + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 10000); // Prepare task for 10 seconds count down } else if ((timeRemaining <= 10000) && (timeRemaining > 0)) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining); // Prepare task for second count down + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining); // Prepare task for second count down } else { @@ -523,7 +523,7 @@ public class Siege implements Siegable // Schedule a task to prepare auto siege end _siegeEndDate = Calendar.getInstance(); _siegeEndDate.add(Calendar.MINUTE, SiegeManager.getInstance().getSiegeLength()); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(getCastle()), 1000); // Prepare auto end task + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(getCastle()), 1000); // Prepare auto end task final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THE_S1_SIEGE_HAS_STARTED); sm.addCastleId(getCastle().getResidenceId()); @@ -1095,7 +1095,7 @@ public class Siege implements Siegable { _scheduledStartSiegeTask.cancel(false); } - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new Siege.ScheduleStartSiegeTask(getCastle()), 1000); + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new Siege.ScheduleStartSiegeTask(getCastle()), 1000); } /** @@ -1413,7 +1413,7 @@ public class Siege implements Siegable if (_scheduledStartSiegeTask != null) { _scheduledStartSiegeTask.cancel(true); - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new Siege.ScheduleStartSiegeTask(getCastle()), 1000); + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new Siege.ScheduleStartSiegeTask(getCastle()), 1000); } try (Connection con = DatabaseFactory.getInstance().getConnection(); diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/eventengine/EventScheduler.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/eventengine/EventScheduler.java index fdc58c3301..8f25107013 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/eventengine/EventScheduler.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/eventengine/EventScheduler.java @@ -115,7 +115,7 @@ public class EventScheduler if (timeSchedule <= (30 * 1000)) { LOGGER.warning("Wrong reschedule for " + _eventManager.getClass().getSimpleName() + " end up run in " + (timeSchedule / 1000) + " seconds!"); - ThreadPoolManager.getInstance().scheduleEvent(this::startScheduler, timeSchedule + 1000); + ThreadPoolManager.schedule(this::startScheduler, timeSchedule + 1000); return; } @@ -124,14 +124,14 @@ public class EventScheduler _task.cancel(false); } - _task = ThreadPoolManager.getInstance().scheduleEvent(() -> + _task = ThreadPoolManager.schedule(() -> { run(); updateLastRun(); if (isRepeating()) { - ThreadPoolManager.getInstance().scheduleEvent(this::startScheduler, 1000); + ThreadPoolManager.schedule(this::startScheduler, 1000); } }, timeSchedule); } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/events/EventDispatcher.java index c7251bbe59..2e551991b6 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -17,7 +17,6 @@ package com.l2jmobius.gameserver.model.events; import java.util.Queue; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -116,7 +115,7 @@ public final class EventDispatcher if (hasListeners) { - ThreadPoolManager.getInstance().executeEvent(() -> notifyEventToMultipleContainers(event, containers, null)); + ThreadPoolManager.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } } @@ -130,22 +129,7 @@ public final class EventDispatcher { if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) { - ThreadPoolManager.getInstance().scheduleEvent(() -> notifyEvent(event, container, null), delay); - } - } - - /** - * Scheduling current listener notification asynchronously after specified delay. - * @param event - * @param container - * @param delay - * @param unit - */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay, TimeUnit unit) - { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) - { - ThreadPoolManager.getInstance().scheduleEvent(() -> notifyEvent(event, container, null), delay, unit); + ThreadPoolManager.schedule(() -> notifyEvent(event, container, null), delay); } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/events/timers/TimerHolder.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/events/timers/TimerHolder.java index 1a0961ed28..98bce44327 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/events/timers/TimerHolder.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/events/timers/TimerHolder.java @@ -58,7 +58,7 @@ public class TimerHolder implements Runnable _eventScript = eventScript; _cancelScript = cancelScript; _postExecutor = postExecutor; - _task = isRepeating ? ThreadPoolManager.getInstance().scheduleEventAtFixedRate(this, _time, _time) : ThreadPoolManager.getInstance().scheduleEvent(this, _time); + _task = isRepeating ? ThreadPoolManager.scheduleAtFixedRate(this, _time, _time) : ThreadPoolManager.schedule(this, _time); TimersManager.getInstance().registerTimer(this); } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/instancezone/Instance.java index c55257fc29..232944b028 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/instancezone/Instance.java @@ -290,7 +290,7 @@ public final class Instance implements IIdentifiable, INamable } else if ((emptyTime >= 0) && (_emptyDestroyTask == null) && (getRemainingTime() < emptyTime)) { - _emptyDestroyTask = ThreadPoolManager.getInstance().scheduleGeneral(this::destroy, emptyTime); + _emptyDestroyTask = ThreadPoolManager.schedule(this::destroy, emptyTime); } } } @@ -684,11 +684,11 @@ public final class Instance implements IIdentifiable, INamable sendWorldDestroyMessage(minutes); if (minutes <= 5) // Message 1 minute before destroy { - _cleanUpTask = ThreadPoolManager.getInstance().scheduleGeneral(this::cleanUp, millis - 60000); + _cleanUpTask = ThreadPoolManager.schedule(this::cleanUp, millis - 60000); } else // Message 5 minutes before destroy { - _cleanUpTask = ThreadPoolManager.getInstance().scheduleGeneral(this::cleanUp, millis - (5 * 60000)); + _cleanUpTask = ThreadPoolManager.schedule(this::cleanUp, millis - (5 * 60000)); } } } @@ -900,13 +900,13 @@ public final class Instance implements IIdentifiable, INamable player.sendPacket(sm); // Start eject task - _ejectDeadTasks.put(player.getObjectId(), ThreadPoolManager.getInstance().scheduleGeneral(() -> + _ejectDeadTasks.put(player.getObjectId(), ThreadPoolManager.schedule(() -> { if (player.isDead()) { ejectPlayer(player.getActingPlayer()); } - }, _template.getEjectTime(), TimeUnit.MINUTES)); + }, _template.getEjectTime() * 60 * 1000)); // minutes to milliseconds } /** @@ -1128,12 +1128,12 @@ public final class Instance implements IIdentifiable, INamable if (getRemainingTime() <= TimeUnit.MINUTES.toMillis(1)) { sendWorldDestroyMessage(1); - _cleanUpTask = ThreadPoolManager.getInstance().scheduleGeneral(this::destroy, 1, TimeUnit.MINUTES); + _cleanUpTask = ThreadPoolManager.schedule(this::destroy, 60 * 1000); // 1 minute } else { sendWorldDestroyMessage(5); - _cleanUpTask = ThreadPoolManager.getInstance().scheduleGeneral(this::cleanUp, 5, TimeUnit.MINUTES); + _cleanUpTask = ThreadPoolManager.schedule(this::cleanUp, 5 * 60 * 1000); // 5 minutes } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/itemauction/ItemAuction.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/itemauction/ItemAuction.java index caee88ddf3..aaab55dec7 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/itemauction/ItemAuction.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/itemauction/ItemAuction.java @@ -400,7 +400,7 @@ public final class ItemAuction public final void broadcastToAllBidders(IClientOutgoingPacket packet) { - ThreadPoolManager.getInstance().executeGeneral(() -> broadcastToAllBiddersInternal(packet)); + ThreadPoolManager.execute(() -> broadcastToAllBiddersInternal(packet)); } public final void broadcastToAllBiddersInternal(IClientOutgoingPacket packet) diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/itemauction/ItemAuctionInstance.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/itemauction/ItemAuctionInstance.java index 6b216c3ba4..544091dcd5 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/itemauction/ItemAuctionInstance.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/itemauction/ItemAuctionInstance.java @@ -331,17 +331,17 @@ public final class ItemAuctionInstance { if (currentAuction.getAuctionState() == ItemAuctionState.STARTED) { - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleAuctionTask(currentAuction), Math.max(currentAuction.getEndingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(new ScheduleAuctionTask(currentAuction), Math.max(currentAuction.getEndingTime() - System.currentTimeMillis(), 0L))); } else { - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleAuctionTask(currentAuction), Math.max(currentAuction.getStartingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(new ScheduleAuctionTask(currentAuction), Math.max(currentAuction.getStartingTime() - System.currentTimeMillis(), 0L))); } LOGGER.info(getClass().getSimpleName() + ": Schedule current auction " + currentAuction.getAuctionId() + " for instance " + _instanceId); } else { - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleAuctionTask(nextAuction), Math.max(nextAuction.getStartingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(new ScheduleAuctionTask(nextAuction), Math.max(nextAuction.getStartingTime() - System.currentTimeMillis(), 0L))); LOGGER.info(getClass().getSimpleName() + ": Schedule next auction " + nextAuction.getAuctionId() + " on " + DATE_FORMAT.format(new Date(nextAuction.getStartingTime())) + " for instance " + _instanceId); } } @@ -429,7 +429,7 @@ public final class ItemAuctionInstance if (_auction.getScheduledAuctionEndingExtendState() == ItemAuctionExtendState.INITIAL) { _auction.setScheduledAuctionEndingExtendState(ItemAuctionExtendState.EXTEND_BY_5_MIN); - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); return; } break; @@ -440,7 +440,7 @@ public final class ItemAuctionInstance if (_auction.getScheduledAuctionEndingExtendState() != ItemAuctionExtendState.EXTEND_BY_3_MIN) { _auction.setScheduledAuctionEndingExtendState(ItemAuctionExtendState.EXTEND_BY_3_MIN); - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); return; } break; @@ -451,7 +451,7 @@ public final class ItemAuctionInstance if (_auction.getScheduledAuctionEndingExtendState() != ItemAuctionExtendState.EXTEND_BY_CONFIG_PHASE_B) { _auction.setScheduledAuctionEndingExtendState(ItemAuctionExtendState.EXTEND_BY_CONFIG_PHASE_B); - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); return; } break; @@ -462,7 +462,7 @@ public final class ItemAuctionInstance if (_auction.getScheduledAuctionEndingExtendState() != ItemAuctionExtendState.EXTEND_BY_CONFIG_PHASE_A) { _auction.setScheduledAuctionEndingExtendState(ItemAuctionExtendState.EXTEND_BY_CONFIG_PHASE_A); - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); return; } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/items/instance/L2ItemInstance.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/items/instance/L2ItemInstance.java index 9d92ce4734..4d68c1314c 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/items/instance/L2ItemInstance.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/items/instance/L2ItemInstance.java @@ -1405,7 +1405,7 @@ public final class L2ItemInstance extends L2Object return; } _consumingMana = true; - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleConsumeManaTask(this), MANA_CONSUMPTION_RATE); + ThreadPoolManager.schedule(new ScheduleConsumeManaTask(this), MANA_CONSUMPTION_RATE); } /** @@ -1538,7 +1538,7 @@ public final class L2ItemInstance extends L2Object public final void dropMe(L2Character dropper, int x, int y, int z) { - ThreadPoolManager.getInstance().executeGeneral(new ItemDropTask(this, dropper, x, y, z)); + ThreadPoolManager.execute(new ItemDropTask(this, dropper, x, y, z)); if ((dropper != null) && dropper.isPlayer()) { // Notify to scripts @@ -1826,7 +1826,7 @@ public final class L2ItemInstance extends L2Object { _lifeTimeTask.cancel(true); } - _lifeTimeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleLifeTimeTask(this), getRemainingTime()); + _lifeTimeTask = ThreadPoolManager.schedule(new ScheduleLifeTimeTask(this), getRemainingTime()); } } @@ -2193,11 +2193,11 @@ public final class L2ItemInstance extends L2Object final long time = getVisualLifeTime() - System.currentTimeMillis(); if (time > 0) { - _appearanceLifeTimeTask = ThreadPoolManager.getInstance().scheduleGeneral(this::onVisualLifeTimeEnd, time); + _appearanceLifeTimeTask = ThreadPoolManager.schedule(this::onVisualLifeTimeEnd, time); } else { - ThreadPoolManager.getInstance().executeGeneral(this::onVisualLifeTimeEnd); + ThreadPoolManager.execute(this::onVisualLifeTimeEnd); } } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/olympiad/Olympiad.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/olympiad/Olympiad.java index b7f07cadea..edbb47633b 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/olympiad/Olympiad.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/olympiad/Olympiad.java @@ -200,7 +200,7 @@ public class Olympiad extends ListenersContainer if (_validationEnd > Calendar.getInstance().getTimeInMillis()) { loadNoblesRank(); - _scheduledValdationTask = ThreadPoolManager.getInstance().scheduleGeneral(new ValidationEndTask(), getMillisToValidationEnd()); + _scheduledValdationTask = ThreadPoolManager.schedule(new ValidationEndTask(), getMillisToValidationEnd()); } else { @@ -357,7 +357,7 @@ public class Olympiad extends ListenersContainer _scheduledOlympiadEnd.cancel(true); } - _scheduledOlympiadEnd = ThreadPoolManager.getInstance().scheduleGeneral(new OlympiadEndTask(), getMillisToOlympiadEnd()); + _scheduledOlympiadEnd = ThreadPoolManager.schedule(new OlympiadEndTask(), getMillisToOlympiadEnd()); updateCompStatus(); } @@ -391,7 +391,7 @@ public class Olympiad extends ListenersContainer _validationEnd = validationEnd.getTimeInMillis() + VALIDATION_PERIOD; loadNoblesRank(); - _scheduledValdationTask = ThreadPoolManager.getInstance().scheduleGeneral(new ValidationEndTask(), getMillisToValidationEnd()); + _scheduledValdationTask = ThreadPoolManager.schedule(new ValidationEndTask(), getMillisToValidationEnd()); } } @@ -439,7 +439,7 @@ public class Olympiad extends ListenersContainer LOGGER.info(getClass().getSimpleName() + ": Event starts/started: " + _compStart.getTime()); } - _scheduledCompStart = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _scheduledCompStart = ThreadPoolManager.schedule(() -> { if (isOlympiadEnd()) { @@ -452,19 +452,19 @@ public class Olympiad extends ListenersContainer LOGGER.info(getClass().getSimpleName() + ": Olympiad Games have started."); _logResults.info("Result,Player1,Player2,Player1 HP,Player2 HP,Player1 Damage,Player2 Damage,Points,Classed"); - _gameManager = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(OlympiadGameManager.getInstance(), 30000, 30000); + _gameManager = ThreadPoolManager.scheduleAtFixedRate(OlympiadGameManager.getInstance(), 30000, 30000); if (Config.ALT_OLY_ANNOUNCE_GAMES) { - _gameAnnouncer = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new OlympiadAnnouncer(), 30000, 500); + _gameAnnouncer = ThreadPoolManager.scheduleAtFixedRate(new OlympiadAnnouncer(), 30000, 500); } final long regEnd = getMillisToCompEnd() - 600000; if (regEnd > 0) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> Broadcast.toAllOnlinePlayers(SystemMessage.getSystemMessage(SystemMessageId.THE_OLYMPIAD_REGISTRATION_PERIOD_HAS_ENDED)), regEnd); + ThreadPoolManager.schedule(() -> Broadcast.toAllOnlinePlayers(SystemMessage.getSystemMessage(SystemMessageId.THE_OLYMPIAD_REGISTRATION_PERIOD_HAS_ENDED)), regEnd); } - _scheduledCompEnd = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _scheduledCompEnd = ThreadPoolManager.schedule(() -> { if (isOlympiadEnd()) { @@ -519,7 +519,7 @@ public class Olympiad extends ListenersContainer _scheduledOlympiadEnd.cancel(true); } - _scheduledOlympiadEnd = ThreadPoolManager.getInstance().scheduleGeneral(new OlympiadEndTask(), 0); + _scheduledOlympiadEnd = ThreadPoolManager.schedule(new OlympiadEndTask(), 0); } protected long getMillisToValidationEnd() @@ -608,7 +608,7 @@ public class Olympiad extends ListenersContainer private void scheduleWeeklyChange() { - _scheduledWeeklyTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(() -> + _scheduledWeeklyTask = ThreadPoolManager.scheduleAtFixedRate(() -> { addWeeklyPoints(); LOGGER.info(getClass().getSimpleName() + ": Added weekly points to nobles"); diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java index d73f155193..f2425871a3 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java @@ -170,7 +170,7 @@ public final class OlympiadGameTask implements Runnable _game = game; _state = GameState.BEGIN; _needAnnounce = false; - ThreadPoolManager.getInstance().executeGeneral(this); + ThreadPoolManager.execute(this); } @Override @@ -341,7 +341,7 @@ public final class OlympiadGameTask implements Runnable return; } } - ThreadPoolManager.getInstance().scheduleGeneral(this, delay * 1000); + ThreadPoolManager.schedule(this, delay * 1000); } catch (Exception e) { @@ -361,7 +361,7 @@ public final class OlympiadGameTask implements Runnable _log.log(Level.WARNING, "Exception in " + _state + ", trying to port players back: " + e.getMessage(), e); _state = GameState.GAME_STOPPED; - ThreadPoolManager.getInstance().scheduleGeneral(this, 1000); + ThreadPoolManager.schedule(this, 1000); } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/punishment/PunishmentTask.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/punishment/PunishmentTask.java index 013c69f09a..bc8f5d0bc3 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/punishment/PunishmentTask.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/punishment/PunishmentTask.java @@ -147,7 +147,7 @@ public class PunishmentTask implements Runnable onStart(); if (_expirationTime > 0) // Has expiration? { - _task = ThreadPoolManager.getInstance().scheduleGeneral(this, (_expirationTime - System.currentTimeMillis())); + _task = ThreadPoolManager.schedule(this, (_expirationTime - System.currentTimeMillis())); } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/quest/LongTimeEvent.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/quest/LongTimeEvent.java index 0f19e40b4e..d197a06b7b 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/quest/LongTimeEvent.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/quest/LongTimeEvent.java @@ -91,7 +91,7 @@ public class LongTimeEvent extends Quest else if (_eventPeriod.getStartDate().after(new Date())) { final long delay = _eventPeriod.getStartDate().getTime() - System.currentTimeMillis(); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStart(), delay); + ThreadPoolManager.schedule(new ScheduleStart(), delay); _log.info("Event " + _eventName + " will be started at " + _eventPeriod.getEndDate()); } else @@ -301,7 +301,7 @@ public class LongTimeEvent extends Quest AnnouncementsTable.getInstance().addAnnouncement(new EventAnnouncement(_eventPeriod, _onEnterMsg)); // Schedule event end (now only for message sending) - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEnd(), millisToEventEnd); + ThreadPoolManager.schedule(new ScheduleEnd(), millisToEventEnd); } /** diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/quest/QuestTimer.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/quest/QuestTimer.java index b468ad4c99..0eb81e0589 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/quest/QuestTimer.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/quest/QuestTimer.java @@ -68,7 +68,7 @@ public class QuestTimer _player = player; _npc = npc; _isRepeating = repeating; - _schedular = repeating ? ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new ScheduleTimerTask(), time, time) : ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleTimerTask(), time); + _schedular = repeating ? ThreadPoolManager.scheduleAtFixedRate(new ScheduleTimerTask(), time, time) : ThreadPoolManager.schedule(new ScheduleTimerTask(), time); } public QuestTimer(Quest quest, String name, long time, L2Npc npc, L2PcInstance player) diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/residences/ResidenceFunction.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/residences/ResidenceFunction.java index 6ebf0aba8e..9b93abc89c 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/residences/ResidenceFunction.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/residences/ResidenceFunction.java @@ -65,7 +65,7 @@ public class ResidenceFunction final ResidenceFunctionTemplate template = getTemplate(); if ((template != null) && (_expiration > System.currentTimeMillis())) { - _task = ThreadPoolManager.getInstance().scheduleGeneral(this::onFunctionExpiration, _expiration - System.currentTimeMillis()); + _task = ThreadPoolManager.schedule(this::onFunctionExpiration, _expiration - System.currentTimeMillis()); } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/shuttle/L2ShuttleEngine.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/shuttle/L2ShuttleEngine.java index 251b61c206..6fb07987fe 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/shuttle/L2ShuttleEngine.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/shuttle/L2ShuttleEngine.java @@ -64,7 +64,7 @@ public class L2ShuttleEngine implements Runnable _shuttle.openDoor(0); _shuttle.closeDoor(1); _shuttle.broadcastShuttleInfo(); - ThreadPoolManager.getInstance().scheduleGeneral(this, DELAY); + ThreadPoolManager.schedule(this, DELAY); break; } case 1: @@ -74,7 +74,7 @@ public class L2ShuttleEngine implements Runnable _shuttle.closeDoor(0); _shuttle.closeDoor(1); _shuttle.broadcastShuttleInfo(); - ThreadPoolManager.getInstance().scheduleGeneral(this, 1000); + ThreadPoolManager.schedule(this, 1000); break; } case 2: @@ -89,7 +89,7 @@ public class L2ShuttleEngine implements Runnable _shuttle.openDoor(1); _shuttle.closeDoor(0); _shuttle.broadcastShuttleInfo(); - ThreadPoolManager.getInstance().scheduleGeneral(this, DELAY); + ThreadPoolManager.schedule(this, DELAY); break; } case 4: @@ -99,7 +99,7 @@ public class L2ShuttleEngine implements Runnable _shuttle.closeDoor(0); _shuttle.closeDoor(1); _shuttle.broadcastShuttleInfo(); - ThreadPoolManager.getInstance().scheduleGeneral(this, 1000); + ThreadPoolManager.schedule(this, 1000); break; } case 5: diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/skills/BuffInfo.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/skills/BuffInfo.java index f77eb25b5c..83cb08e95d 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/skills/BuffInfo.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/skills/BuffInfo.java @@ -291,7 +291,7 @@ public final class BuffInfo // Creates a task that will stop all the effects. if (_abnormalTime > 0) { - _scheduledFutureTimeTask = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new BuffTimeTask(this), 0, 1000L); + _scheduledFutureTimeTask = ThreadPoolManager.scheduleAtFixedRate(new BuffTimeTask(this), 0, 1000L); } // Reset abnormal visual effects. @@ -313,7 +313,7 @@ public final class BuffInfo { // The task for the effect ticks. final EffectTickTask effectTask = new EffectTickTask(this, effect); - final ScheduledFuture scheduledFuture = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(effectTask, effect.getTicks() * Config.EFFECT_TICK_RATIO, effect.getTicks() * Config.EFFECT_TICK_RATIO); + final ScheduledFuture scheduledFuture = ThreadPoolManager.scheduleAtFixedRate(effectTask, effect.getTicks() * Config.EFFECT_TICK_RATIO, effect.getTicks() * Config.EFFECT_TICK_RATIO); // Adds the task for ticking. addTask(effect, new EffectTaskInfo(effectTask, scheduledFuture)); } @@ -448,7 +448,7 @@ public final class BuffInfo { _scheduledFutureTimeTask.cancel(true); } - _scheduledFutureTimeTask = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new BuffTimeTask(this), 0, 1000L); + _scheduledFutureTimeTask = ThreadPoolManager.scheduleAtFixedRate(new BuffTimeTask(this), 0, 1000L); } } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java index ec30530b46..9780892efe 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -211,7 +211,7 @@ public class SkillCaster implements Runnable // Reschedule next task if we have such. if (hasNextPhase) { - _task = ThreadPoolManager.getInstance().scheduleEffect(this, nextTaskDelay); + _task = ThreadPoolManager.schedule(this, nextTaskDelay); } else { @@ -650,7 +650,7 @@ public class SkillCaster implements Runnable if (queuedSkill != null) { - ThreadPoolManager.getInstance().executeGeneral(() -> + ThreadPoolManager.execute(() -> { currPlayer.setQueuedSkill(null, null, false, false); currPlayer.useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/skills/SkillChannelizer.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/skills/SkillChannelizer.java index 47cf19adfa..3875eb6830 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/skills/SkillChannelizer.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/skills/SkillChannelizer.java @@ -78,7 +78,7 @@ public class SkillChannelizer implements Runnable // Start channeling. _skill = skill; - _task = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this, skill.getChannelingTickInitialDelay(), skill.getChannelingTickInterval()); + _task = ThreadPoolManager.scheduleAtFixedRate(this, skill.getChannelingTickInitialDelay(), skill.getChannelingTickInterval()); } public void stopChanneling() diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/votereward/VoteSystem.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/votereward/VoteSystem.java index ee96ba2285..dd4d99799e 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/votereward/VoteSystem.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/votereward/VoteSystem.java @@ -108,7 +108,7 @@ public abstract class VoteSystem implements Runnable this.rewards = rewards; this.checkMins = checkMins; - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this, checkMins * 1000 * 60, checkMins * 1000 * 60); + ThreadPoolManager.scheduleAtFixedRate(this, checkMins * 1000 * 60, checkMins * 1000 * 60); } protected void reward() diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2DamageZone.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2DamageZone.java index 4ba930be33..ab4c97288c 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2DamageZone.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2DamageZone.java @@ -121,7 +121,7 @@ public class L2DamageZone extends L2ZoneType { if (getSettings().getTask() == null) { - getSettings().setTask(ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new ApplyDamage(this), _startTask, _reuseTask)); + getSettings().setTask(ThreadPoolManager.scheduleAtFixedRate(new ApplyDamage(this), _startTask, _reuseTask)); } } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2EffectZone.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2EffectZone.java index 8faad5e583..53947b8169 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2EffectZone.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2EffectZone.java @@ -136,7 +136,7 @@ public final class L2EffectZone extends L2ZoneType { if (getSettings().getTask() == null) { - getSettings().setTask(ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new ApplySkill(), _initialDelay, _reuse)); + getSettings().setTask(ThreadPoolManager.scheduleAtFixedRate(new ApplySkill(), _initialDelay, _reuse)); } } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2FishingZone.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2FishingZone.java index d95e135c58..6814af7a3a 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2FishingZone.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2FishingZone.java @@ -47,7 +47,7 @@ public class L2FishingZone extends L2ZoneType if ((Config.ALLOW_FISHING || character.canOverrideCond(PcCondOverride.ZONE_CONDITIONS)) && !character.isInsideZone(ZoneId.FISHING)) { final WeakReference weakPlayer = new WeakReference<>(character.getActingPlayer()); - ThreadPoolManager.getInstance().executeGeneral(new Runnable() + ThreadPoolManager.execute(new Runnable() { @Override public void run() @@ -69,7 +69,7 @@ public class L2FishingZone extends L2ZoneType player.sendPacket(ExAutoFishAvailable.NO); } } - ThreadPoolManager.getInstance().scheduleGeneral(this, 1500); + ThreadPoolManager.schedule(this, 1500); } else { diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2JailZone.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2JailZone.java index 0b360f8bde..13e3744d6c 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2JailZone.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2JailZone.java @@ -77,7 +77,7 @@ public class L2JailZone extends L2ZoneType if (player.isJailed()) { // when a player wants to exit jail even if he is still jailed, teleport him back to jail - ThreadPoolManager.getInstance().scheduleGeneral(new TeleportTask(player, JAIL_IN_LOC), 2000); + ThreadPoolManager.schedule(new TeleportTask(player, JAIL_IN_LOC), 2000); character.sendMessage("You cannot cheat your way out of here. You must wait until your jail time is over."); } if (Config.JAIL_DISABLE_TRANSACTION) diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2OlympiadStadiumZone.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2OlympiadStadiumZone.java index 8209ddaf83..55f2f70d6b 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2OlympiadStadiumZone.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2OlympiadStadiumZone.java @@ -144,7 +144,7 @@ public class L2OlympiadStadiumZone extends L2ZoneRespawn // only participants, observers and GMs allowed if (!player.canOverrideCond(PcCondOverride.ZONE_CONDITIONS) && !player.isInOlympiadMode() && !player.inObserverMode()) { - ThreadPoolManager.getInstance().executeGeneral(new KickPlayer(player)); + ThreadPoolManager.execute(new KickPlayer(player)); } else { diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2ResidenceHallTeleportZone.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2ResidenceHallTeleportZone.java index 211ac52c18..063cd551e6 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2ResidenceHallTeleportZone.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2ResidenceHallTeleportZone.java @@ -62,7 +62,7 @@ public class L2ResidenceHallTeleportZone extends L2ResidenceTeleportZone { if ((_teleTask == null) || _teleTask.isDone()) { - _teleTask = ThreadPoolManager.getInstance().scheduleGeneral(new TeleportTask(), 30000); + _teleTask = ThreadPoolManager.schedule(new TeleportTask(), 30000); } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2SayuneZone.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2SayuneZone.java index f096d5eb89..0872062a68 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2SayuneZone.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/model/zone/type/L2SayuneZone.java @@ -59,7 +59,7 @@ public class L2SayuneZone extends L2ZoneType if (character.isPlayer() && (character.isInCategory(CategoryType.AWAKEN_GROUP) || Config.FREE_JUMPS_FOR_ALL) && !character.getActingPlayer().isMounted() && !character.isTransformed()) { character.setInsideZone(ZoneId.SAYUNE, true); - ThreadPoolManager.getInstance().executeGeneral(new FlyMoveStartTask(this, character.getActingPlayer())); + ThreadPoolManager.execute(new FlyMoveStartTask(this, character.getActingPlayer())); } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/network/L2GameClient.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/network/L2GameClient.java index b890cdc278..6bc536e28a 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/network/L2GameClient.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/network/L2GameClient.java @@ -113,7 +113,7 @@ public final class L2GameClient extends ChannelInboundHandler _crypt = new Crypt(this); if (Config.CHAR_DATA_STORE_INTERVAL > 0) { - _autoSaveInDB = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoSaveTask(), 300000L, Config.CHAR_DATA_STORE_INTERVAL); + _autoSaveInDB = ThreadPoolManager.scheduleAtFixedRate(new AutoSaveTask(), 300000L, Config.CHAR_DATA_STORE_INTERVAL); } else { @@ -146,7 +146,7 @@ public final class L2GameClient extends ChannelInboundHandler // no long running tasks here, do it async try { - ThreadPoolManager.getInstance().executeGeneral(new DisconnectTask()); + ThreadPoolManager.execute(new DisconnectTask()); } catch (RejectedExecutionException e) { @@ -652,7 +652,7 @@ public final class L2GameClient extends ChannelInboundHandler { cancelCleanup(); } - _cleanupTask = ThreadPoolManager.getInstance().scheduleGeneral(new CleanupTask(), 0); // instant + _cleanupTask = ThreadPoolManager.schedule(new CleanupTask(), 0); // instant } } @@ -802,7 +802,7 @@ public final class L2GameClient extends ChannelInboundHandler { if (_cleanupTask == null) { - _cleanupTask = ThreadPoolManager.getInstance().scheduleGeneral(new CleanupTask(), fast ? 5 : 15000L); + _cleanupTask = ThreadPoolManager.schedule(new CleanupTask(), fast ? 5 : 15000L); } } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index b09a554259..d28ccaa409 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -645,7 +645,7 @@ public class EnterWorld implements IClientIncomingPacket if (Config.HARDWARE_INFO_ENABLED) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { if (client.getHardwareInfo() == null) { diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/network/clientpackets/RequestPreviewItem.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/network/clientpackets/RequestPreviewItem.java index a6900f0102..c1db83f07e 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/network/clientpackets/RequestPreviewItem.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/network/clientpackets/RequestPreviewItem.java @@ -241,7 +241,7 @@ public final class RequestPreviewItem implements IClientIncomingPacket { activeChar.sendPacket(new ShopPreviewInfo(itemList)); // Schedule task - ThreadPoolManager.getInstance().scheduleGeneral(new RemoveWearItemsTask(activeChar), Config.WEAR_DELAY * 1000); + ThreadPoolManager.schedule(new RemoveWearItemsTask(activeChar), Config.WEAR_DELAY * 1000); } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index e7b3af4a35..6c7ebff02e 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -98,7 +98,7 @@ public final class RequestRestartPoint implements IClientIncomingPacket if ((activeChar.getClan() != null) && castle.getSiege().checkIsAttacker(activeChar.getClan())) { // Schedule respawn delay for attacker - ThreadPoolManager.getInstance().scheduleGeneral(new DeathTask(activeChar), castle.getSiege().getAttackerRespawnDelay()); + ThreadPoolManager.schedule(new DeathTask(activeChar), castle.getSiege().getAttackerRespawnDelay()); if (castle.getSiege().getAttackerRespawnDelay() > 0) { activeChar.sendMessage("You will be re-spawned in " + (castle.getSiege().getAttackerRespawnDelay() / 1000) + " seconds"); diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/network/clientpackets/UseItem.java index 7d80202cca..d6412dc382 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -246,7 +246,7 @@ public final class UseItem implements IClientIncomingPacket } else if (activeChar.isAttackingNow()) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { // If character is still engaged in strike we should not change weapon if (activeChar.isAttackingNow()) diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/taskmanager/AttackStanceTaskManager.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/taskmanager/AttackStanceTaskManager.java index 6e059c1112..9612f78257 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/taskmanager/AttackStanceTaskManager.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/taskmanager/AttackStanceTaskManager.java @@ -43,7 +43,7 @@ public class AttackStanceTaskManager */ protected AttackStanceTaskManager() { - ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new FightModeScheduler(), 0, 1000); + ThreadPoolManager.scheduleAtFixedRate(new FightModeScheduler(), 0, 1000); } /** diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/taskmanager/TaskManager.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/taskmanager/TaskManager.java index 44879f7839..5d9816577a 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/taskmanager/TaskManager.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/taskmanager/TaskManager.java @@ -223,31 +223,37 @@ public final class TaskManager private boolean launchTask(ExecutedTask task) { - final ThreadPoolManager scheduler = ThreadPoolManager.getInstance(); final TaskTypes type = task.getType(); long delay, interval; switch (type) { case TYPE_STARTUP: + { task.run(); return false; + } case TYPE_SHEDULED: + { delay = Long.valueOf(task.getParams()[0]); - task.scheduled = scheduler.scheduleGeneral(task, delay); + task.scheduled = ThreadPoolManager.schedule(task, delay); return true; + } case TYPE_FIXED_SHEDULED: + { delay = Long.valueOf(task.getParams()[0]); interval = Long.valueOf(task.getParams()[1]); - task.scheduled = scheduler.scheduleGeneralAtFixedRate(task, delay, interval); + task.scheduled = ThreadPoolManager.scheduleAtFixedRate(task, delay, interval); return true; + } case TYPE_TIME: + { try { final Date desired = DateFormat.getInstance().parse(task.getParams()[0]); final long diff = desired.getTime() - System.currentTimeMillis(); if (diff >= 0) { - task.scheduled = scheduler.scheduleGeneral(task, diff); + task.scheduled = ThreadPoolManager.schedule(task, diff); return true; } LOGGER.info("Task " + task.getId() + " is obsoleted."); @@ -256,7 +262,9 @@ public final class TaskManager { } break; + } case TYPE_SPECIAL: + { final ScheduledFuture result = task.getTask().launchSpecial(task); if (result != null) { @@ -264,7 +272,9 @@ public final class TaskManager return true; } break; + } case TYPE_GLOBAL_TASK: + { interval = Long.valueOf(task.getParams()[0]) * 86400000L; final String[] hour = task.getParams()[1].split(":"); @@ -296,10 +306,13 @@ public final class TaskManager { delay += interval; } - task.scheduled = scheduler.scheduleGeneralAtFixedRate(task, delay, interval); + task.scheduled = ThreadPoolManager.scheduleAtFixedRate(task, delay, interval); return true; + } default: + { return false; + } } return false; } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/util/Evolve.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/util/Evolve.java index c01bee7451..101903e150 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/util/Evolve.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/util/Evolve.java @@ -144,11 +144,11 @@ public final class Evolve petSummon.startFeed(); item.setEnchantLevel(petSummon.getLevel()); - ThreadPoolManager.getInstance().scheduleGeneral(new EvolveFinalizer(player, petSummon), 900); + ThreadPoolManager.schedule(new EvolveFinalizer(player, petSummon), 900); if (petSummon.getCurrentFed() <= 0) { - ThreadPoolManager.getInstance().scheduleGeneral(new EvolveFeedWait(player, petSummon), 60000); + ThreadPoolManager.schedule(new EvolveFeedWait(player, petSummon), 60000); } else { @@ -242,11 +242,11 @@ public final class Evolve final L2World world = L2World.getInstance(); world.removeObject(removedItem); - ThreadPoolManager.getInstance().scheduleGeneral(new EvolveFinalizer(player, petSummon), 900); + ThreadPoolManager.schedule(new EvolveFinalizer(player, petSummon), 900); if (petSummon.getCurrentFed() <= 0) { - ThreadPoolManager.getInstance().scheduleGeneral(new EvolveFeedWait(player, petSummon), 60000); + ThreadPoolManager.schedule(new EvolveFeedWait(player, petSummon), 60000); } else { diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/util/MinionList.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/util/MinionList.java index 10bebbe63e..22ba27c49f 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/util/MinionList.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/util/MinionList.java @@ -190,7 +190,7 @@ public class MinionList final int time = respawnTime < 0 ? _master.isRaid() ? (int) Config.RAID_MINION_RESPAWN_TIMER : 0 : respawnTime; if ((time > 0) && !_master.isAlikeDead()) { - ThreadPoolManager.getInstance().scheduleGeneral(new MinionRespawnTask(minion), time); + ThreadPoolManager.schedule(new MinionRespawnTask(minion), time); } } diff --git a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/util/Util.java b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/util/Util.java index 3795e02b4d..e551224ab8 100644 --- a/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/util/Util.java +++ b/L2J_Mobius_Ertheia/java/com/l2jmobius/gameserver/util/Util.java @@ -60,7 +60,7 @@ public final class Util public static void handleIllegalPlayerAction(L2PcInstance actor, String message, IllegalActionPunishmentType punishment) { - ThreadPoolManager.getInstance().scheduleGeneral(new IllegalPlayerActionTask(actor, message, punishment), 5000); + ThreadPoolManager.schedule(new IllegalPlayerActionTask(actor, message, punishment), 5000); } /** diff --git a/L2J_Mobius_Helios/dist/game/config/General.ini b/L2J_Mobius_Helios/dist/game/config/General.ini index 942a2aec5e..6f97b11d1a 100644 --- a/L2J_Mobius_Helios/dist/game/config/General.ini +++ b/L2J_Mobius_Helios/dist/game/config/General.ini @@ -132,33 +132,29 @@ SkillCheckGM = False # Thread Configuration # --------------------------------------------------------------------------- -# Extreme caution should be here, set to defaults if you do not know what you are doing. -# These could possibly hurt your servers performance or improve it depending on your server's configuration, size, and other factors. -# Default: 10 -ThreadPoolSizeEffects = 50 +# Determines the amount of scheduled thread pools. If set to -1, the server will decide the amount depending on the available processors. +Default: -1 +ScheduledThreadPoolCount = -1 -# Default: 13 -ThreadPoolSizeGeneral = 65 +# Specifies how many threads will be in a single scheduled pool. +Default: 4 +ThreadsPerScheduledThreadPool = 40 -# Default: 2 -ThreadPoolSizeEvents = 10 +# Determines the amount of instant thread pools. If set to -1, the server will decide the amount depending on the available processors. +Default: -1 +InstantThreadPoolCount = -1 + +# Specifies how many threads will be in a single instant pool. +Default: 2 +ThreadsPerInstantThreadPool = 20 # Default: 2 UrgentPacketThreadCoreSize = 20 -# Default: 4 -GeneralPacketThreadCoreSize = 20 -# Default: 4 -GeneralThreadCoreSize = 20 - -# Default: 6 -AiMaxThread = 30 - -# Default: 5 -EventsMaxThread = 25 - -# Dead Lock Detector (a separate thread for detecting deadlocks). +# --------------------------------------------------------------------------- +# Dead Lock Detector (separate thread for detecting deadlocks) +# --------------------------------------------------------------------------- # For improved crash logs and automatic restart in deadlock case if enabled. # Check interval is in seconds. # Default: True diff --git a/L2J_Mobius_Helios/dist/game/data/html/admin/serverinfo.htm b/L2J_Mobius_Helios/dist/game/data/html/admin/serverinfo.htm index cf06c95dc3..84dd350f5c 100644 --- a/L2J_Mobius_Helios/dist/game/data/html/admin/serverinfo.htm +++ b/L2J_Mobius_Helios/dist/game/data/html/admin/serverinfo.htm @@ -8,7 +8,6 @@
-
General: @@ -76,30 +75,5 @@
%totalMem% MB
-
-Thread - General (STP): - %theardInfoGen% -
-Thread - Effects (STP): - %theardInfoEff% -
-Thread - AI (STP): - %theardInfoAi% -
-Thread - Event (STP): - %theardInfoEvent% -
-Thread - Packets (TP): - %theardInfoPack% -
-Thread - I/O Packets (TP): - %theardInfoIOPack% -
-Thread - General Tasks (TP): - %theardInfoGenTask% -
-Thread - Event Tasks (TP): - %theardInfoEvnTask% -
\ No newline at end of file diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/DenOfDevil/DenOfEvil.java b/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/DenOfDevil/DenOfEvil.java index a8f49820ee..3619de52a6 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/DenOfDevil/DenOfEvil.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/DenOfDevil/DenOfEvil.java @@ -127,7 +127,7 @@ public final class DenOfEvil extends AbstractNpcAI zone.addSkill(skillId, skillLevel + 1); if (skillLevel == 3) // 3+1=4 { - ThreadPoolManager.getInstance().scheduleAi(new KashaDestruction(zone), 2 * 60 * 1000l); + ThreadPoolManager.schedule(new KashaDestruction(zone), 2 * 60 * 1000l); zone.broadcastPacket(SystemMessage.getSystemMessage(SystemMessageId.DEFEAT_KASHA_S_EYES_TO_LIFT_THE_GREAT_CURSE)); } else if (skillLevel == 2) @@ -140,7 +140,7 @@ public final class DenOfEvil extends AbstractNpcAI @Override public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) { - ThreadPoolManager.getInstance().scheduleAi(new RespawnNewEye(npc.getLocation()), 15000); + ThreadPoolManager.schedule(new RespawnNewEye(npc.getLocation()), 15000); final L2EffectZone zone = ZoneManager.getInstance().getZone(npc, L2EffectZone.class); if (zone == null) { @@ -213,7 +213,7 @@ public final class DenOfEvil extends AbstractNpcAI final L2Npc npc = (L2Npc) character; if (CommonUtil.contains(EYE_IDS, npc.getId())) { - ThreadPoolManager.getInstance().scheduleAi(new RespawnNewEye(npc.getLocation()), 15000); + ThreadPoolManager.schedule(new RespawnNewEye(npc.getLocation()), 15000); } } } diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/FantasyIsle/Parade.java b/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/FantasyIsle/Parade.java index 666135ade5..e42870fd2d 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/FantasyIsle/Parade.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/FantasyIsle/Parade.java @@ -129,11 +129,11 @@ public final class Parade extends AbstractNpcAI { // Starts at 8:00 and repeats every 6 hours. final long diff = timeLeftMilli(8, 0, 0), cycle = 3600000L; - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Start(), diff, cycle); + ThreadPoolManager.scheduleAtFixedRate(new Start(), diff, cycle); // Test - Starts 3 minutes after server startup and repeats every 20 minutes. // final long diff = timeLeftMilli(8, 0, 0), cycle = 600000L; - // ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Start(), 180000L, cycle); + // ThreadPoolManager.scheduleAtFixedRate(new Start(), 180000L, cycle); _log.info("Fantasy Isle: Parade starting at " + new SimpleDateFormat("yyyy/MM/dd HH:mm").format(System.currentTimeMillis() + diff) + " and is scheduled each next " + (cycle / 3600000) + " hours."); } @@ -171,9 +171,9 @@ public final class Parade extends AbstractNpcAI public void run() { load(); - spawnTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Spawn(), 0, 5000); - deleteTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Delete(), 10000, 1000); - cleanTask = ThreadPoolManager.getInstance().scheduleGeneral(new Clean(), 420000); + spawnTask = ThreadPoolManager.scheduleAtFixedRate(new Spawn(), 0, 5000); + deleteTask = ThreadPoolManager.scheduleAtFixedRate(new Delete(), 10000, 1000); + cleanTask = ThreadPoolManager.schedule(new Clean(), 420000); } } diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/GainakUnderground/GainakSiege.java b/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/GainakUnderground/GainakSiege.java index c767185165..4a0b8e79a7 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/GainakUnderground/GainakSiege.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/GainakUnderground/GainakSiege.java @@ -141,7 +141,7 @@ public final class GainakSiege extends AbstractNpcAI final L2SiegeZone zone = ZoneManager.getInstance().getZone(npc, L2SiegeZone.class); if ((zone != null) && (zone.getId() == 60019) && zone.isActive()) { - ThreadPoolManager.getInstance().scheduleAi(new RespawnNewAssassin(npc.getLocation()), 60000); + ThreadPoolManager.schedule(new RespawnNewAssassin(npc.getLocation()), 60000); } return super.onKill(npc, killer, isSummon); } diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/ImperialTomb/FourSepulchers/FourSepulchers.java b/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/ImperialTomb/FourSepulchers/FourSepulchers.java index 81460f0f4d..d53bc8c351 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/ImperialTomb/FourSepulchers/FourSepulchers.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/ImperialTomb/FourSepulchers/FourSepulchers.java @@ -256,7 +256,7 @@ public final class FourSepulchers extends AbstractNpcAI implements IGameXmlReade if ((doorInfo[0] == sepulcherId) && (doorInfo[1] == currentWave)) { openDoor(doorInfo[2], 0); - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { closeDoor(doorInfo[2], 0); }, 15000); @@ -578,7 +578,7 @@ public final class FourSepulchers extends AbstractNpcAI implements IGameXmlReade showHtmlFile(player, npcId + "-OK.html", npc, null); // Kick all players when/if time is over - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { ZoneManager.getInstance().getZoneById(MANAGER_ZONES.get(npcId)).oustAllPlayers(); }, TIME_ATTACK * 60 * 1000); diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/Rune/AltarOfSacrifice/AltarOfSacrifice.java b/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/Rune/AltarOfSacrifice/AltarOfSacrifice.java index cb37e1acbc..790799b0ad 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/Rune/AltarOfSacrifice/AltarOfSacrifice.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/Rune/AltarOfSacrifice/AltarOfSacrifice.java @@ -109,7 +109,7 @@ public class AltarOfSacrifice extends AbstractNpcAI private void sendMessage(L2Npc npc, NpcStringId npcString, int delay) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { if (npc != null) { diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/TalkingIsland/AwakeningMaster/AwakeningMaster.java b/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/TalkingIsland/AwakeningMaster/AwakeningMaster.java index 4a6324cdfd..4149992c67 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/TalkingIsland/AwakeningMaster/AwakeningMaster.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/TalkingIsland/AwakeningMaster/AwakeningMaster.java @@ -349,7 +349,7 @@ public final class AwakeningMaster extends AbstractNpcAI player.sendSkillList(); } - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { player.sendPacket(ExShowUsm.AWAKENING_END); }, 10000); diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/TalkingIsland/HarnakUndergroundRuinsZone/HarnakUndergroundRuinsZone.java b/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/TalkingIsland/HarnakUndergroundRuinsZone/HarnakUndergroundRuinsZone.java index 1078ee92a6..5b467277fa 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/TalkingIsland/HarnakUndergroundRuinsZone/HarnakUndergroundRuinsZone.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/ai/areas/TalkingIsland/HarnakUndergroundRuinsZone/HarnakUndergroundRuinsZone.java @@ -174,7 +174,7 @@ public class HarnakUndergroundRuinsZone extends AbstractNpcAI _templates.stream().forEach(t -> t.spawn(g -> String.valueOf(g.getName()).equalsIgnoreCase(zoneName.concat("_demonic")), null)); zone.getPlayersInside().forEach(temp -> temp.sendPacket(new ExSendUIEvent(temp, false, false, 600, 0, NpcStringId.DEMONIC_SYSTEM_ACTIVATED))); currentInfo.setZoneStage(7); - ThreadPoolManager.getInstance().scheduleGeneral(new changeZoneStage(zone), 600000); // 10min + ThreadPoolManager.schedule(new changeZoneStage(zone), 600000); // 10min } else { @@ -202,7 +202,7 @@ public class HarnakUndergroundRuinsZone extends AbstractNpcAI if (currentInfo.getZoneStage() < 6) { currentInfo.setZoneStage(currentInfo.getZoneStage() + 1); - ThreadPoolManager.getInstance().scheduleGeneral(new changeZoneStage(zone), 5000); + ThreadPoolManager.schedule(new changeZoneStage(zone), 5000); } } catch (Exception e) @@ -248,7 +248,7 @@ public class HarnakUndergroundRuinsZone extends AbstractNpcAI if (calcPoints >= 300) { calcPoints = 300; - ThreadPoolManager.getInstance().scheduleGeneral(new changeZoneStage(currentZone.getKey()), 1000); + ThreadPoolManager.schedule(new changeZoneStage(currentZone.getKey()), 1000); } currentInfo.setCurrentPoint(calcPoints); for (L2PcInstance player : currentZone.getKey().getPlayersInside()) diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/ai/bosses/QueenAnt/QueenAnt.java b/L2J_Mobius_Helios/dist/game/data/scripts/ai/bosses/QueenAnt/QueenAnt.java index 65c2ebbf40..6c0a28cefe 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/ai/bosses/QueenAnt/QueenAnt.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/ai/bosses/QueenAnt/QueenAnt.java @@ -258,7 +258,7 @@ public final class QueenAnt extends AbstractNpcAI { ((L2MonsterInstance) npc).getMinionList().spawnMinions(npc.getParameters().getMinionList("Privates")); } - _task = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new QueenAntTask(), 5 * 1000, 5 * 1000); + _task = ThreadPoolManager.scheduleAtFixedRate(new QueenAntTask(), 5 * 1000, 5 * 1000); break; } } diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/ai/others/EnergySeeds.java b/L2J_Mobius_Helios/dist/game/data/scripts/ai/others/EnergySeeds.java index ed7ca4eba8..55a016c369 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/ai/others/EnergySeeds.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/ai/others/EnergySeeds.java @@ -701,7 +701,7 @@ public final class EnergySeeds extends AbstractNpcAI public void scheduleRespawn(long waitTime) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { // if the AI is inactive, do not spawn the NPC if (isSeedActive(_seedId)) diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/ai/others/NpcBuffers/NpcBufferAI.java b/L2J_Mobius_Helios/dist/game/data/scripts/ai/others/NpcBuffers/NpcBufferAI.java index 5728cca206..9cef571b2a 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/ai/others/NpcBuffers/NpcBufferAI.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/ai/others/NpcBuffers/NpcBufferAI.java @@ -90,6 +90,6 @@ public class NpcBufferAI implements Runnable _npc.doCast(skill); - ThreadPoolManager.getInstance().scheduleGeneral(this, skill.getReuseDelay()); + ThreadPoolManager.schedule(this, skill.getReuseDelay()); } } \ No newline at end of file diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/ai/others/NpcBuffers/NpcBuffers.java b/L2J_Mobius_Helios/dist/game/data/scripts/ai/others/NpcBuffers/NpcBuffers.java index 148b7d78e3..faf003a11c 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/ai/others/NpcBuffers/NpcBuffers.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/ai/others/NpcBuffers/NpcBuffers.java @@ -53,7 +53,7 @@ public final class NpcBuffers extends AbstractNpcAI final NpcBufferData data = _npcBuffers.getNpcBuffer(npc.getId()); for (NpcBufferSkillData skill : data.getSkills()) { - ThreadPoolManager.getInstance().scheduleAi(new NpcBufferAI(npc, skill), skill.getInitialDelay()); + ThreadPoolManager.schedule(new NpcBufferAI(npc, skill), skill.getInitialDelay()); } return super.onSpawn(npc); } diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/custom/events/Elpies/Elpies.java b/L2J_Mobius_Helios/dist/game/data/scripts/custom/events/Elpies/Elpies.java index 93bb20bf3c..f8601fd797 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/custom/events/Elpies/Elpies.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/custom/events/Elpies/Elpies.java @@ -112,7 +112,7 @@ public final class Elpies extends Event Broadcast.toAllOnlinePlayers("Help us exterminate them!"); Broadcast.toAllOnlinePlayers("You have " + EVENT_DURATION_MINUTES + " minutes!"); - _eventTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _eventTask = ThreadPoolManager.schedule(() -> { Broadcast.toAllOnlinePlayers("Time is up!"); eventStop(); diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/custom/events/Race/Race.java b/L2J_Mobius_Helios/dist/game/data/scripts/custom/events/Race/Race.java index d4f444d6c8..54832d23fd 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/custom/events/Race/Race.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/custom/events/Race/Race.java @@ -138,7 +138,7 @@ public final class Race extends Event Broadcast.toAllOnlinePlayers("Visit Event Manager in Dion village and signup, you have " + _time_register + " min before Race Start..."); // Schedule Event end - _eventTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> StartRace(), _time_register * 60 * 1000); + _eventTask = ThreadPoolManager.schedule(() -> StartRace(), _time_register * 60 * 1000); return true; @@ -181,7 +181,7 @@ public final class Race extends Event } } // Schedule timeup for Race - _eventTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> timeUp(), _time_race * 60 * 1000); + _eventTask = ThreadPoolManager.schedule(() -> timeUp(), _time_race * 60 * 1000); } @Override diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_Mobius_Helios/dist/game/data/scripts/handlers/MasterHandler.java index 73f55c9e81..4e5398f278 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/handlers/MasterHandler.java @@ -309,7 +309,6 @@ import handlers.telnethandlers.server.ServerAbort; import handlers.telnethandlers.server.ServerRestart; import handlers.telnethandlers.server.ServerShutdown; import handlers.telnethandlers.server.Status; -import handlers.telnethandlers.server.ThreadPoolDebug; import handlers.usercommandhandlers.ChannelDelete; import handlers.usercommandhandlers.ChannelInfo; import handlers.usercommandhandlers.ChannelLeave; @@ -751,7 +750,6 @@ public class MasterHandler TelnetServer.getInstance().addHandler(new ServerRestart()); TelnetServer.getInstance().addHandler(new ServerShutdown()); TelnetServer.getInstance().addHandler(new Status()); - TelnetServer.getInstance().addHandler(new ThreadPoolDebug()); TelnetServer.getInstance().addHandler(new handlers.telnethandlers.server.Debug()); } diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/handlers/admincommandhandlers/AdminMonsterRace.java b/L2J_Mobius_Helios/dist/game/data/scripts/handlers/admincommandhandlers/AdminMonsterRace.java index b9f123e18c..b986361b8c 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/handlers/admincommandhandlers/AdminMonsterRace.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/handlers/admincommandhandlers/AdminMonsterRace.java @@ -107,7 +107,7 @@ public class AdminMonsterRace implements IAdminCommandHandler activeChar.sendPacket(spk); activeChar.broadcastPacket(spk); - ThreadPoolManager.getInstance().scheduleGeneral(new RunRace(codes, activeChar), 5000); + ThreadPoolManager.schedule(new RunRace(codes, activeChar), 5000); } } @@ -137,7 +137,7 @@ public class AdminMonsterRace implements IAdminCommandHandler final MonRaceInfo spk = new MonRaceInfo(codes[2][0], codes[2][1], MonsterRace.getInstance().getMonsters(), MonsterRace.getInstance().getSpeeds()); activeChar.sendPacket(spk); activeChar.broadcastPacket(spk); - ThreadPoolManager.getInstance().scheduleGeneral(new RunEnd(activeChar), 30000); + ThreadPoolManager.schedule(new RunEnd(activeChar), 30000); } } diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/handlers/admincommandhandlers/AdminServerInfo.java b/L2J_Mobius_Helios/dist/game/data/scripts/handlers/admincommandhandlers/AdminServerInfo.java index 12a2f312c2..6796381333 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/handlers/admincommandhandlers/AdminServerInfo.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/handlers/admincommandhandlers/AdminServerInfo.java @@ -20,14 +20,12 @@ import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Date; import java.util.HashSet; -import java.util.Map.Entry; import java.util.Set; import java.util.concurrent.TimeUnit; import com.l2jmobius.Config; import com.l2jmobius.gameserver.GameServer; import com.l2jmobius.gameserver.GameTimeController; -import com.l2jmobius.gameserver.ThreadPoolManager; import com.l2jmobius.gameserver.cache.HtmCache; import com.l2jmobius.gameserver.data.xml.impl.AdminData; import com.l2jmobius.gameserver.handler.IAdminCommandHandler; @@ -72,14 +70,6 @@ public class AdminServerInfo implements IAdminCommandHandler html.replace("%usedMem%", (RunTime.maxMemory() / mb) - (((RunTime.maxMemory() - RunTime.totalMemory()) + RunTime.freeMemory()) / mb)); html.replace("%freeMem%", ((RunTime.maxMemory() - RunTime.totalMemory()) + RunTime.freeMemory()) / mb); html.replace("%totalMem%", Runtime.getRuntime().maxMemory() / 1048576); - html.replace("%theardInfoGen%", buildTheardInfo("GENERAL")); - html.replace("%theardInfoEff%", buildTheardInfo("EFFECTS")); - html.replace("%theardInfoAi%", buildTheardInfo("AI")); - html.replace("%theardInfoEvent%", buildTheardInfo("EVENT")); - html.replace("%theardInfoPack%", buildTheardInfo("PACKETS")); - html.replace("%theardInfoIOPack%", buildTheardInfo("IOPACKETS")); - html.replace("%theardInfoGenTask%", buildTheardInfo("GENERAL_TASKS")); - html.replace("%theardInfoEvnTask%", buildTheardInfo("EVENT_TASKS")); activeChar.sendPacket(html); } return true; @@ -96,22 +86,6 @@ public class AdminServerInfo implements IAdminCommandHandler return days + " Days, " + hours + " Hours, " + TimeUnit.MILLISECONDS.toMinutes(time) + " Minutes"; } - private String buildTheardInfo(String category) - { - final StringBuilder tb = new StringBuilder(); - - tb.append(""); - for (Entry info : ThreadPoolManager.getInstance().getStats(category).getSet().entrySet()) - { - tb.append(""); - tb.append(""); - tb.append(""); - tb.append(""); - } - tb.append("
" + info.getKey() + ":" + info.getValue() + "
"); - return tb.toString(); - } - private int getPlayersCount(String type) { switch (type) diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/handlers/admincommandhandlers/AdminTest.java b/L2J_Mobius_Helios/dist/game/data/scripts/handlers/admincommandhandlers/AdminTest.java index 3033172007..b64a8a1504 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/handlers/admincommandhandlers/AdminTest.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/handlers/admincommandhandlers/AdminTest.java @@ -46,7 +46,7 @@ public class AdminTest implements IAdminCommandHandler { if (command.equals("admin_stats")) { - for (String line : ThreadPoolManager.getInstance().getStats()) + for (String line : ThreadPoolManager.getStats()) { activeChar.sendMessage(line); } diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java b/L2J_Mobius_Helios/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java index 84f3d3d721..bd3295b928 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java @@ -57,7 +57,7 @@ public class ClassChange extends AbstractEffect { final L2PcInstance player = effected.getActingPlayer(); // TODO: FIX ME - Executing 1 second later otherwise interupted exception during storeCharBase() - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { final int activeClass = player.getClassId().getId(); diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/handlers/effecthandlers/ServitorShare.java b/L2J_Mobius_Helios/dist/game/data/scripts/handlers/effecthandlers/ServitorShare.java index 41b8a93749..02f29f0a1a 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/handlers/effecthandlers/ServitorShare.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/handlers/effecthandlers/ServitorShare.java @@ -67,7 +67,7 @@ public final class ServitorShare extends AbstractEffect if (effected != null) { - ThreadPoolManager.getInstance().scheduleEffect(new ScheduledEffectExitTask(effected, info.getSkill().getId()), 100); + ThreadPoolManager.schedule(new ScheduledEffectExitTask(effected, info.getSkill().getId()), 100); } } } diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/handlers/punishmenthandlers/JailHandler.java b/L2J_Mobius_Helios/dist/game/data/scripts/handlers/punishmenthandlers/JailHandler.java index ad753cf33d..6618f26888 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/handlers/punishmenthandlers/JailHandler.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/handlers/punishmenthandlers/JailHandler.java @@ -162,7 +162,7 @@ public class JailHandler implements IPunishmentHandler OlympiadManager.getInstance().removeDisconnectedCompetitor(player); } - ThreadPoolManager.getInstance().scheduleGeneral(new TeleportTask(player, L2JailZone.getLocationIn()), 2000); + ThreadPoolManager.schedule(new TeleportTask(player, L2JailZone.getLocationIn()), 2000); // Open a Html message to inform the player final NpcHtmlMessage msg = new NpcHtmlMessage(); @@ -198,7 +198,7 @@ public class JailHandler implements IPunishmentHandler */ private static void removeFromPlayer(L2PcInstance player) { - ThreadPoolManager.getInstance().scheduleGeneral(new TeleportTask(player, L2JailZone.getLocationOut()), 2000); + ThreadPoolManager.schedule(new TeleportTask(player, L2JailZone.getLocationOut()), 2000); // Open a Html message to inform the player final NpcHtmlMessage msg = new NpcHtmlMessage(); diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/handlers/telnethandlers/server/Debug.java b/L2J_Mobius_Helios/dist/game/data/scripts/handlers/telnethandlers/server/Debug.java index c58d8b8bc4..612ca5cdc7 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/handlers/telnethandlers/server/Debug.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/handlers/telnethandlers/server/Debug.java @@ -68,7 +68,7 @@ public class Debug implements ITelnetCommand @Override public String getUsage() { - return "Debug "; + return "Debug "; } @Override @@ -108,90 +108,6 @@ public class Debug implements ITelnetCommand player.sendPacket(sp); return "Packet has been sent!"; } - case "PacketTP": - { - final String str = ThreadPoolManager.getInstance().getPacketStats(); - int i = 0; - File f = new File("./log/StackTrace-PacketTP-" + i + ".txt"); - while (f.exists()) - { - i++; - f = new File("./log/StackTrace-PacketTP-" + i + ".txt"); - } - f.getParentFile().mkdirs(); - try - { - Files.write(f.toPath(), str.getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE); - } - catch (IOException e) - { - LOGGER.log(Level.WARNING, "Couldn't write packet tp.", e); - } - return str; - } - case "IOPacketTP": - { - final String str = ThreadPoolManager.getInstance().getIOPacketStats(); - int i = 0; - File f = new File("./log/StackTrace-IOPacketTP-" + i + ".txt"); - while (f.exists()) - { - i++; - f = new File("./log/StackTrace-IOPacketTP-" + i + ".txt"); - } - f.getParentFile().mkdirs(); - try - { - Files.write(f.toPath(), str.getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE); - } - catch (IOException e) - { - LOGGER.log(Level.WARNING, "Couldn't write packet tp.", e); - } - return str; - } - case "GeneralTP": - { - final String str = ThreadPoolManager.getInstance().getGeneralStats(); - int i = 0; - File f = new File("./log/StackTrace-GeneralTP-" + i + ".txt"); - while (f.exists()) - { - i++; - f = new File("./log/StackTrace-GeneralTP-" + i + ".txt"); - } - f.getParentFile().mkdirs(); - try - { - Files.write(f.toPath(), str.getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE); - } - catch (IOException e) - { - LOGGER.log(Level.WARNING, "Couldn't write packet tp.", e); - } - return str; - } - case "GeneralScheduledTP": - { - final String str = ThreadPoolManager.getInstance().getGeneralStats(); - int i = 0; - File f = new File("./log/StackTrace-GeneralScheduledTP-" + i + ".txt"); - while (f.exists()) - { - i++; - f = new File("./log/StackTrace-GeneralScheduledTP-" + i + ".txt"); - } - f.getParentFile().mkdirs(); - try - { - Files.write(f.toPath(), str.getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE); - } - catch (IOException e) - { - LOGGER.log(Level.WARNING, "Couldn't write packet tp.", e); - } - return str; - } case "full": { final Calendar cal = Calendar.getInstance(); @@ -283,7 +199,7 @@ public class Debug implements ITelnetCommand } sb.append("\r\n## Thread Pool Manager Statistics ##\r\n"); - for (String line : ThreadPoolManager.getInstance().getStats()) + for (String line : ThreadPoolManager.getStats()) { sb.append(line); sb.append("\r\n"); diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/handlers/telnethandlers/server/Performance.java b/L2J_Mobius_Helios/dist/game/data/scripts/handlers/telnethandlers/server/Performance.java index 7c609ac673..4ca843967c 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/handlers/telnethandlers/server/Performance.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/handlers/telnethandlers/server/Performance.java @@ -42,9 +42,9 @@ public class Performance implements ITelnetCommand @Override public String handle(ChannelHandlerContext ctx, String[] args) { - ThreadPoolManager.getInstance().purge(); + // ThreadPoolManager.purge(); final StringBuilder sb = new StringBuilder(); - for (String line : ThreadPoolManager.getInstance().getStats()) + for (String line : ThreadPoolManager.getStats()) { sb.append(line + Config.EOL); } diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/handlers/telnethandlers/server/Purge.java b/L2J_Mobius_Helios/dist/game/data/scripts/handlers/telnethandlers/server/Purge.java index 71f7c52abc..0ae4d70bdf 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/handlers/telnethandlers/server/Purge.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/handlers/telnethandlers/server/Purge.java @@ -42,9 +42,9 @@ public class Purge implements ITelnetCommand @Override public String handle(ChannelHandlerContext ctx, String[] args) { - ThreadPoolManager.getInstance().purge(); + ThreadPoolManager.purge(); final StringBuilder sb = new StringBuilder("STATUS OF THREAD POOLS AFTER PURGE COMMAND:" + Config.EOL); - for (String line : ThreadPoolManager.getInstance().getStats()) + for (String line : ThreadPoolManager.getStats()) { sb.append(line + Config.EOL); } diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/handlers/telnethandlers/server/ThreadPoolDebug.java b/L2J_Mobius_Helios/dist/game/data/scripts/handlers/telnethandlers/server/ThreadPoolDebug.java deleted file mode 100644 index f984c7f2cb..0000000000 --- a/L2J_Mobius_Helios/dist/game/data/scripts/handlers/telnethandlers/server/ThreadPoolDebug.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.telnethandlers.server; - -import java.lang.reflect.Field; -import java.util.Comparator; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.FutureTask; -import java.util.concurrent.ScheduledThreadPoolExecutor; -import java.util.logging.Level; -import java.util.logging.Logger; - -import com.l2jmobius.Config; -import com.l2jmobius.gameserver.ThreadPoolManager; -import com.l2jmobius.gameserver.ThreadPoolManager.RunnableWrapper; -import com.l2jmobius.gameserver.network.telnet.ITelnetCommand; - -import io.netty.channel.ChannelHandlerContext; - -/** - * @author UnAfraid - */ -public class ThreadPoolDebug implements ITelnetCommand -{ - private static final Logger LOGGER = Logger.getLogger(ThreadPoolDebug.class.getName()); - - @Override - public String getCommand() - { - return "threadpooldebug"; - } - - @Override - public String getUsage() - { - return "threadpooldebug [effect, general, ai, events]"; - } - - @Override - public String handle(ChannelHandlerContext ctx, String[] args) - { - String pool = "_generalScheduledThreadPool"; - if (args.length > 0) - { - switch (args[0]) - { - case "effect": - { - pool = "_effectsScheduledThreadPool"; - break; - } - case "general": - { - pool = "_generalScheduledThreadPool"; - break; - } - case "ai": - { - pool = "_aiScheduledThreadPool"; - break; - } - case "events": - { - pool = "_eventScheduledThreadPool"; - break; - } - default: - { - return args[0] + " is not implemented!"; - } - } - } - final ScheduledThreadPoolExecutor executor = getObject(ThreadPoolManager.class, ThreadPoolManager.getInstance(), pool, ScheduledThreadPoolExecutor.class); - if (executor == null) - { - return "Couldn't retreive " + pool + "!"; - } - - Class adapterClass; - try - { - adapterClass = Class.forName("java.util.concurrent.Executors$RunnableAdapter"); - } - catch (Exception e) - { - return e.getMessage(); - } - - final Map tasks = new HashMap<>(); - for (Runnable run : executor.getQueue()) - { - try - { - if (run instanceof FutureTask) - { - final Object callableObject = getObject(FutureTask.class, run, "callable", Object.class); - final Object taskObject = getObject(adapterClass, callableObject, "task", Object.class); - - if (taskObject instanceof RunnableWrapper) - { - final Runnable task = getObject(RunnableWrapper.class, taskObject, "_r", Runnable.class); - final String name = task.getClass().getName(); - final int times = tasks.containsKey(name) ? tasks.get(name) : 0; - tasks.put(name, times + 1); - } - } - } - catch (Exception e) - { - e.printStackTrace(); - } - } - - final StringBuilder sb = new StringBuilder(); - sb.append(pool + " queue size: " + executor.getQueue().size() + Config.EOL); - - tasks.entrySet().stream().sorted(Comparator.comparingInt(Entry::getValue)).forEach(entry -> sb.append("Class: " + entry.getKey() + " = " + entry.getValue() + Config.EOL)); - - return sb.toString(); - } - - private static T getObject(Class sourceClass, Object sourceInstance, String fieldName, Class targetClass) - { - try - { - final Field field = sourceClass.getDeclaredField(fieldName); - - // Mark down if field was accessible - final boolean isAccessible = field.isAccessible(); - - // Enforce accessible to retrieve the object associated with this field - if (!isAccessible) - { - field.setAccessible(true); - } - - // Get the object - final Object fieldObject = field.get(sourceInstance); - - // Restore the original accessible state. - field.setAccessible(isAccessible); - - // Make sure the object is the one we expect to be - if (targetClass.isInstance(fieldObject)) - { - return targetClass.cast(fieldObject); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Error while retrieving object of " + sourceInstance.getClass().getName() + "." + fieldName, e); - } - return null; - } -} diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/instances/CastleDungeon/CastleDungeon.java b/L2J_Mobius_Helios/dist/game/data/scripts/instances/CastleDungeon/CastleDungeon.java index f6606acc88..4baa7c3145 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/instances/CastleDungeon/CastleDungeon.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/instances/CastleDungeon/CastleDungeon.java @@ -22,7 +22,6 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; import com.l2jmobius.commons.util.CommonUtil; import com.l2jmobius.gameserver.ThreadPoolManager; @@ -203,7 +202,7 @@ public final class CastleDungeon extends AbstractInstance */ private void spawnRaid(Instance instance) { - final ScheduledFuture spawnTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> + final ScheduledFuture spawnTask = ThreadPoolManager.schedule(() -> { // Get template id of raid final int npcId; @@ -230,7 +229,7 @@ public final class CastleDungeon extends AbstractInstance // Unset spawn task reference instance.setParameter("spawnTask", null); - }, 2, TimeUnit.MINUTES); + }, 2 * 60 * 1000); // 2 minutes // Save timer to instance world instance.setParameter("spawnTask", spawnTask); diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/instances/ChambersOfDelusion/ChamberOfDelusion.java b/L2J_Mobius_Helios/dist/game/data/scripts/instances/ChambersOfDelusion/ChamberOfDelusion.java index dd710244f9..2f9e28fa07 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/instances/ChambersOfDelusion/ChamberOfDelusion.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/instances/ChambersOfDelusion/ChamberOfDelusion.java @@ -111,7 +111,7 @@ public final class ChamberOfDelusion extends AbstractInstance changeRoom(instance); // Start banish task - final ScheduledFuture banishTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(() -> + final ScheduledFuture banishTask = ThreadPoolManager.scheduleAtFixedRate(() -> { if (instance.getRemainingTime() < 60000) { @@ -410,7 +410,7 @@ public final class ChamberOfDelusion extends AbstractInstance final long nextInterval = (bossRoom) ? 60000L : (ROOM_CHANGE_INTERVAL + getRandom(ROOM_CHANGE_RANDOM_TIME)) * 1000L; if (world.getRemainingTime() > nextInterval) { - final ScheduledFuture roomChangeTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> + final ScheduledFuture roomChangeTask = ThreadPoolManager.schedule(() -> { try { diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/instances/FortressDungeon/FortressDungeon.java b/L2J_Mobius_Helios/dist/game/data/scripts/instances/FortressDungeon/FortressDungeon.java index ee2492b568..31def525c1 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/instances/FortressDungeon/FortressDungeon.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/instances/FortressDungeon/FortressDungeon.java @@ -22,7 +22,6 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; import com.l2jmobius.commons.util.CommonUtil; import com.l2jmobius.gameserver.ThreadPoolManager; @@ -226,7 +225,7 @@ public final class FortressDungeon extends AbstractInstance */ private void spawnRaid(Instance instance) { - final ScheduledFuture spawnTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> + final ScheduledFuture spawnTask = ThreadPoolManager.schedule(() -> { // Get template id of raid final int npcId; @@ -247,7 +246,7 @@ public final class FortressDungeon extends AbstractInstance // Unset spawn task reference instance.setParameter("spawnTask", null); - }, 2, TimeUnit.MINUTES); + }, 2 * 60 * 1000); // 2 minutes // Save timer to instance world instance.setParameter("spawnTask", spawnTask); diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/quests/Q10292_SevenSignsGirlOfDoubt/Q10292_SevenSignsGirlOfDoubt.java b/L2J_Mobius_Helios/dist/game/data/scripts/quests/Q10292_SevenSignsGirlOfDoubt/Q10292_SevenSignsGirlOfDoubt.java index 64496cf9c2..9e5daeb716 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/quests/Q10292_SevenSignsGirlOfDoubt/Q10292_SevenSignsGirlOfDoubt.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/quests/Q10292_SevenSignsGirlOfDoubt/Q10292_SevenSignsGirlOfDoubt.java @@ -160,7 +160,7 @@ public final class Q10292_SevenSignsGirlOfDoubt extends Quest creature1.setRandomWalking(true); final L2Npc creature2 = addSpawn(CREATURE_OF_THE_DUSK2, 89524, -238131, -9632, 56, false, 0, false, player.getInstanceId()); creature2.setRandomWalking(true); - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { creature1.deleteMe(); creature2.deleteMe(); diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/vehicles/AirShipController.java b/L2J_Mobius_Helios/dist/game/data/scripts/vehicles/AirShipController.java index b87a53cbb1..bd5264cfe0 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/vehicles/AirShipController.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/vehicles/AirShipController.java @@ -291,11 +291,11 @@ public abstract class AirShipController extends AbstractNpcAI playMovie(_dockedShip.getPassengers(), _movie); } - ThreadPoolManager.getInstance().scheduleGeneral(_decayTask, 1000); + ThreadPoolManager.schedule(_decayTask, 1000); } else { - _departSchedule = ThreadPoolManager.getInstance().scheduleGeneral(_departTask, DEPART_INTERVAL); + _departSchedule = ThreadPoolManager.schedule(_departTask, DEPART_INTERVAL); } } } diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/vehicles/AirShipGludioGracia/AirShipGludioGracia.java b/L2J_Mobius_Helios/dist/game/data/scripts/vehicles/AirShipGludioGracia/AirShipGludioGracia.java index 72d293c6ba..1246d1204e 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/vehicles/AirShipGludioGracia/AirShipGludioGracia.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/vehicles/AirShipGludioGracia/AirShipGludioGracia.java @@ -248,7 +248,7 @@ public final class AirShipGludioGracia extends AbstractNpcAI implements Runnable case 1: // _ship.teleToLocation(-167874, 256731, -509, 41035, false); _ship.setOustLoc(OUST_GRACIA); - ThreadPoolManager.getInstance().scheduleGeneral(this, 5000); + ThreadPoolManager.schedule(this, 5000); break; case 2: _ship.executePath(WARPGATE_TO_GRACIA); @@ -257,7 +257,7 @@ public final class AirShipGludioGracia extends AbstractNpcAI implements Runnable broadcastInGracia(NpcStringId.THE_REGULARLY_SCHEDULED_AIRSHIP_HAS_ARRIVED_IT_WILL_DEPART_FOR_THE_ADEN_CONTINENT_IN_1_MINUTE); _ship.setInDock(GRACIA_DOCK_ID); _ship.oustPlayers(); - ThreadPoolManager.getInstance().scheduleGeneral(this, 60000); + ThreadPoolManager.schedule(this, 60000); break; case 4: broadcastInGracia(NpcStringId.THE_REGULARLY_SCHEDULED_AIRSHIP_THAT_FLIES_TO_THE_ADEN_CONTINENT_HAS_DEPARTED); @@ -267,7 +267,7 @@ public final class AirShipGludioGracia extends AbstractNpcAI implements Runnable case 5: // _ship.teleToLocation(-157261, 255664, 221, 64781, false); _ship.setOustLoc(OUST_GLUDIO); - ThreadPoolManager.getInstance().scheduleGeneral(this, 5000); + ThreadPoolManager.schedule(this, 5000); break; case 6: _ship.executePath(WARPGATE_TO_GLUDIO); @@ -276,7 +276,7 @@ public final class AirShipGludioGracia extends AbstractNpcAI implements Runnable broadcastInGludio(NpcStringId.THE_REGULARLY_SCHEDULED_AIRSHIP_HAS_ARRIVED_IT_WILL_DEPART_FOR_THE_GRACIA_CONTINENT_IN_1_MINUTE); _ship.setInDock(GLUDIO_DOCK_ID); _ship.oustPlayers(); - ThreadPoolManager.getInstance().scheduleGeneral(this, 60000); + ThreadPoolManager.schedule(this, 60000); break; } _cycle++; diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/vehicles/BoatGludinRune.java b/L2J_Mobius_Helios/dist/game/data/scripts/vehicles/BoatGludinRune.java index 35a160a405..746b80fafd 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/vehicles/BoatGludinRune.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/vehicles/BoatGludinRune.java @@ -175,15 +175,15 @@ public class BoatGludinRune implements Runnable { case 0: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], LEAVE_GLUDIN5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 1: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], LEAVE_GLUDIN1); - ThreadPoolManager.getInstance().scheduleGeneral(this, 40000); + ThreadPoolManager.schedule(this, 40000); break; case 2: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], LEAVE_GLUDIN0); - ThreadPoolManager.getInstance().scheduleGeneral(this, 20000); + ThreadPoolManager.schedule(this, 20000); break; case 3: BoatManager.getInstance().dockShip(BoatManager.GLUDIN_HARBOR, false); @@ -191,19 +191,19 @@ public class BoatGludinRune implements Runnable _boat.broadcastPacket(GLUDIN_SOUND); _boat.payForRide(7905, 1, -90015, 150422, -3610); _boat.executePath(GLUDIN_TO_RUNE); - ThreadPoolManager.getInstance().scheduleGeneral(this, 250000); + ThreadPoolManager.schedule(this, 250000); break; case 4: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], ARRIVAL_RUNE15); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 5: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], ARRIVAL_RUNE10); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 6: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], ARRIVAL_RUNE5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 7: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], ARRIVAL_RUNE1); @@ -222,7 +222,7 @@ public class BoatGludinRune implements Runnable _shoutCount = 0; } - ThreadPoolManager.getInstance().scheduleGeneral(this, 5000); + ThreadPoolManager.schedule(this, 5000); return; } _boat.executePath(RUNE_DOCK); @@ -231,19 +231,19 @@ public class BoatGludinRune implements Runnable BoatManager.getInstance().dockShip(BoatManager.RUNE_HARBOR, true); BoatManager.getInstance().broadcastPackets(RUNE_DOCK[0], GLUDIN_DOCK[0], ARRIVED_AT_RUNE, ARRIVED_AT_RUNE_2); _boat.broadcastPacket(RUNE_SOUND); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 10: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], LEAVE_RUNE5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 11: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], LEAVE_RUNE1); - ThreadPoolManager.getInstance().scheduleGeneral(this, 40000); + ThreadPoolManager.schedule(this, 40000); break; case 12: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], LEAVE_RUNE0); - ThreadPoolManager.getInstance().scheduleGeneral(this, 20000); + ThreadPoolManager.schedule(this, 20000); break; case 13: BoatManager.getInstance().dockShip(BoatManager.RUNE_HARBOR, false); @@ -251,19 +251,19 @@ public class BoatGludinRune implements Runnable _boat.broadcastPacket(RUNE_SOUND); _boat.payForRide(7904, 1, 34513, -38009, -3640); _boat.executePath(RUNE_TO_GLUDIN); - ThreadPoolManager.getInstance().scheduleGeneral(this, 60000); + ThreadPoolManager.schedule(this, 60000); break; case 14: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], ARRIVAL_GLUDIN15); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 15: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], ARRIVAL_GLUDIN10); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 16: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], ARRIVAL_GLUDIN5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 17: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], ARRIVAL_GLUDIN1); @@ -282,7 +282,7 @@ public class BoatGludinRune implements Runnable _shoutCount = 0; } - ThreadPoolManager.getInstance().scheduleGeneral(this, 5000); + ThreadPoolManager.schedule(this, 5000); return; } _boat.executePath(GLUDIN_DOCK); @@ -291,7 +291,7 @@ public class BoatGludinRune implements Runnable BoatManager.getInstance().dockShip(BoatManager.GLUDIN_HARBOR, true); BoatManager.getInstance().broadcastPackets(GLUDIN_DOCK[0], RUNE_DOCK[0], ARRIVED_AT_GLUDIN, ARRIVED_AT_GLUDIN_2); _boat.broadcastPacket(GLUDIN_SOUND); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; } _shoutCount = 0; diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/vehicles/BoatInnadrilTour.java b/L2J_Mobius_Helios/dist/game/data/scripts/vehicles/BoatInnadrilTour.java index d7a909f26b..0c6be76018 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/vehicles/BoatInnadrilTour.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/vehicles/BoatInnadrilTour.java @@ -118,44 +118,44 @@ public class BoatInnadrilTour implements Runnable { case 0: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, LEAVE_INNADRIL5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 1: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, LEAVE_INNADRIL1); - ThreadPoolManager.getInstance().scheduleGeneral(this, 40000); + ThreadPoolManager.schedule(this, 40000); break; case 2: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, LEAVE_INNADRIL0); - ThreadPoolManager.getInstance().scheduleGeneral(this, 20000); + ThreadPoolManager.schedule(this, 20000); break; case 3: BoatManager.getInstance().broadcastPackets(DOCK, DOCK, LEAVING_INNADRIL, INNADRIL_SOUND); _boat.payForRide(0, 1, 107092, 219098, -3952); _boat.executePath(TOUR); - ThreadPoolManager.getInstance().scheduleGeneral(this, 650000); + ThreadPoolManager.schedule(this, 650000); break; case 4: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, ARRIVAL20); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 5: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, ARRIVAL15); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 6: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, ARRIVAL10); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 7: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, ARRIVAL5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 8: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, ARRIVAL1); break; case 9: BoatManager.getInstance().broadcastPackets(DOCK, DOCK, ARRIVED_AT_INNADRIL, INNADRIL_SOUND); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; } _cycle++; diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/vehicles/BoatRunePrimeval.java b/L2J_Mobius_Helios/dist/game/data/scripts/vehicles/BoatRunePrimeval.java index 6de5286c16..7359b6bdec 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/vehicles/BoatRunePrimeval.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/vehicles/BoatRunePrimeval.java @@ -117,7 +117,7 @@ public class BoatRunePrimeval implements Runnable break; case 1: BoatManager.getInstance().broadcastPackets(PRIMEVAL_DOCK, RUNE_DOCK[0], ARRIVED_AT_PRIMEVAL, ARRIVED_AT_PRIMEVAL_2, PRIMEVAL_SOUND); - ThreadPoolManager.getInstance().scheduleGeneral(this, 180000); + ThreadPoolManager.schedule(this, 180000); break; case 2: BoatManager.getInstance().broadcastPackets(PRIMEVAL_DOCK, RUNE_DOCK[0], LEAVING_PRIMEVAL, PRIMEVAL_SOUND); @@ -138,7 +138,7 @@ public class BoatRunePrimeval implements Runnable _shoutCount = 0; } - ThreadPoolManager.getInstance().scheduleGeneral(this, 5000); + ThreadPoolManager.schedule(this, 5000); return; } _boat.executePath(RUNE_DOCK); @@ -146,7 +146,7 @@ public class BoatRunePrimeval implements Runnable case 4: BoatManager.getInstance().dockShip(BoatManager.RUNE_HARBOR, true); BoatManager.getInstance().broadcastPackets(RUNE_DOCK[0], PRIMEVAL_DOCK, ARRIVED_AT_RUNE, ARRIVED_AT_RUNE_2, RUNE_SOUND); - ThreadPoolManager.getInstance().scheduleGeneral(this, 180000); + ThreadPoolManager.schedule(this, 180000); break; } _shoutCount = 0; diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/Config.java b/L2J_Mobius_Helios/java/com/l2jmobius/Config.java index 3b85ec1b52..7e7e66747d 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/Config.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/Config.java @@ -426,14 +426,11 @@ public final class Config public static boolean ALT_DEV_NO_SPAWNS; public static boolean ALT_DEV_SHOW_QUESTS_LOAD_IN_LOGS; public static boolean ALT_DEV_SHOW_SCRIPTS_LOAD_IN_LOGS; - public static int THREAD_P_EFFECTS; - public static int THREAD_P_GENERAL; - public static int THREAD_E_EVENTS; - public static int GENERAL_PACKET_THREAD_CORE_SIZE; + public static int SCHEDULED_THREAD_POOL_COUNT; + public static int THREADS_PER_SCHEDULED_THREAD_POOL; + public static int INSTANT_THREAD_POOL_COUNT; + public static int THREADS_PER_INSTANT_THREAD_POOL; public static int IO_PACKET_THREAD_CORE_SIZE; - public static int GENERAL_THREAD_CORE_SIZE; - public static int AI_MAX_THREAD; - public static int EVENT_MAX_THREAD; public static boolean DEADLOCK_DETECTOR; public static int DEADLOCK_CHECK_INTERVAL; public static boolean RESTART_ON_DEADLOCK; @@ -1705,14 +1702,11 @@ public final class Config ALT_DEV_NO_SPAWNS = General.getBoolean("AltDevNoSpawns", false) || Boolean.getBoolean("nospawns"); ALT_DEV_SHOW_QUESTS_LOAD_IN_LOGS = General.getBoolean("AltDevShowQuestsLoadInLogs", false); ALT_DEV_SHOW_SCRIPTS_LOAD_IN_LOGS = General.getBoolean("AltDevShowScriptsLoadInLogs", false); - THREAD_P_EFFECTS = General.getInt("ThreadPoolSizeEffects", 10); - THREAD_P_GENERAL = General.getInt("ThreadPoolSizeGeneral", 13); - THREAD_E_EVENTS = General.getInt("ThreadPoolSizeEvents", 2); + SCHEDULED_THREAD_POOL_COUNT = General.getInt("ScheduledThreadPoolCount", -1); + THREADS_PER_SCHEDULED_THREAD_POOL = General.getInt("ThreadsPerScheduledThreadPool", 4); + INSTANT_THREAD_POOL_COUNT = General.getInt("InstantThreadPoolCount", -1); + THREADS_PER_INSTANT_THREAD_POOL = General.getInt("ThreadsPerInstantThreadPool", 2); IO_PACKET_THREAD_CORE_SIZE = General.getInt("UrgentPacketThreadCoreSize", 2); - GENERAL_PACKET_THREAD_CORE_SIZE = General.getInt("GeneralPacketThreadCoreSize", 4); - GENERAL_THREAD_CORE_SIZE = General.getInt("GeneralThreadCoreSize", 4); - AI_MAX_THREAD = General.getInt("AiMaxThread", 6); - EVENT_MAX_THREAD = General.getInt("EventsMaxThread", 5); DEADLOCK_DETECTOR = General.getBoolean("DeadLockDetector", true); DEADLOCK_CHECK_INTERVAL = General.getInt("DeadLockCheckInterval", 20); RESTART_ON_DEADLOCK = General.getBoolean("RestartOnDeadlock", false); diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/GameServer.java index 610b75b6b3..62634f16d4 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/GameServer.java @@ -176,13 +176,15 @@ public class GameServer { final long serverLoadStart = System.currentTimeMillis(); + printSection("IdFactory"); if (!IdFactory.getInstance().isInitialized()) { LOGGER.severe(getClass().getSimpleName() + ": Could not read object IDs from database. Please check your configuration."); throw new Exception("Could not initialize the ID factory"); } - ThreadPoolManager.getInstance(); + printSection("ThreadPool"); + ThreadPoolManager.init(); EventDispatcher.getInstance(); // load script engines diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ItemsAutoDestroy.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ItemsAutoDestroy.java index c2a3271697..777bcbbd43 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ItemsAutoDestroy.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ItemsAutoDestroy.java @@ -31,7 +31,7 @@ public final class ItemsAutoDestroy protected ItemsAutoDestroy() { - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this::removeItems, 5000, 5000); + ThreadPoolManager.scheduleAtFixedRate(this::removeItems, 5000, 5000); } public static ItemsAutoDestroy getInstance() diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/RecipeController.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/RecipeController.java index 05e4b8586c..a84a29cd81 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/RecipeController.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/RecipeController.java @@ -109,7 +109,7 @@ public class RecipeController if (Config.ALT_GAME_CREATION) { _activeMakers.put(manufacturer.getObjectId(), maker); - ThreadPoolManager.getInstance().scheduleGeneral(maker, 100); + ThreadPoolManager.schedule(maker, 100); } else { @@ -158,7 +158,7 @@ public class RecipeController if (Config.ALT_GAME_CREATION) { _activeMakers.put(player.getObjectId(), maker); - ThreadPoolManager.getInstance().scheduleGeneral(maker, 100); + ThreadPoolManager.schedule(maker, 100); } else { @@ -354,7 +354,7 @@ public class RecipeController _player.broadcastPacket(msk); _player.sendPacket(new SetupGauge(_player.getObjectId(), 0, _delay)); - ThreadPoolManager.getInstance().scheduleGeneral(this, 100 + _delay); + ThreadPoolManager.schedule(this, 100 + _delay); } else { @@ -548,7 +548,7 @@ public class RecipeController if (Config.ALT_GAME_CREATION && isWait) { _player.sendPacket(new SetupGauge(_player.getObjectId(), 0, _delay)); - ThreadPoolManager.getInstance().scheduleGeneral(this, 100 + _delay); + ThreadPoolManager.schedule(this, 100 + _delay); } else { @@ -570,7 +570,7 @@ public class RecipeController if (Config.ALT_GAME_CREATION && isWait) { _player.sendPacket(new SetupGauge(_player.getObjectId(), 0, _delay)); - ThreadPoolManager.getInstance().scheduleGeneral(this, 100 + _delay); + ThreadPoolManager.schedule(this, 100 + _delay); } else { diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/Shutdown.java index 81dc2f141a..369510db24 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/Shutdown.java @@ -215,7 +215,7 @@ public class Shutdown extends Thread // stop all thread pools try { - ThreadPoolManager.getInstance().shutdown(); + ThreadPoolManager.shutdown(); LOGGER.info("Thread Pool Manager: Manager has been shut down(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); } catch (Throwable t) diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ThreadPoolManager.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ThreadPoolManager.java index 7e4beb26eb..5d85cdee27 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ThreadPoolManager.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ThreadPoolManager.java @@ -16,803 +16,284 @@ */ package com.l2jmobius.gameserver; -import java.lang.Thread.UncaughtExceptionHandler; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.RejectedExecutionException; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledThreadPoolExecutor; -import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.logging.Level; import java.util.logging.Logger; import com.l2jmobius.Config; -import com.l2jmobius.gameserver.model.StatsSet; /** + * This class handles thread pooling system. It relies on two ThreadPoolExecutor arrays, which poolers number is generated using config. *

- * This class is made to handle all the ThreadPools used in L2J. + * Those arrays hold following pools : *

- *

- * Scheduled Tasks can either be sent to a {@link #_generalScheduledThreadPool "general"} or {@link #_effectsScheduledThreadPool "effects"} {@link ScheduledThreadPoolExecutor ScheduledThreadPool}: The "effects" one is used for every effects (skills, hp/mp regen ...) while the "general" one is used - * for everything else that needs to be scheduled.
- * There also is an {@link #_aiScheduledThreadPool "ai"} {@link ScheduledThreadPoolExecutor ScheduledThreadPool} used for AI Tasks. - *

- *

- * Tasks can be sent to {@link ScheduledThreadPoolExecutor ScheduledThreadPool} either with: *

    - *
  • {@link #scheduleEffect(Runnable, long, TimeUnit)} and {@link #scheduleEffect(Runnable, long)} : for effects Tasks that needs to be executed only once.
  • - *
  • {@link #scheduleGeneral(Runnable, long, TimeUnit)} and {@link #scheduleGeneral(Runnable, long)} : for scheduled Tasks that needs to be executed once.
  • - *
  • {@link #scheduleAi(Runnable, long, TimeUnit)} and {@link #scheduleAi(Runnable, long)} : for AI Tasks that needs to be executed once
  • + *
  • Scheduled pool keeps a track about incoming, future events.
  • + *
  • Instant pool handles short-life events.
  • *
- * or - *
    - *
  • {@link #scheduleEffectAtFixedRate(Runnable, long, long, TimeUnit)} and {@link #scheduleEffectAtFixedRate(Runnable, long, long)} : for effects Tasks that needs to be executed periodicaly.
  • - *
  • {@link #scheduleGeneralAtFixedRate(Runnable, long, long, TimeUnit)} and {@link #scheduleGeneralAtFixedRate(Runnable, long, long)} : for scheduled Tasks that needs to be executed periodicaly.
  • - *
  • {@link #scheduleAiAtFixedRate(Runnable, long, long, TimeUnit)} and {@link #scheduleAiAtFixedRate(Runnable, long, long)} : for AI Tasks that needs to be executed periodicaly
  • - *
- *

- *

- * For all Tasks that should be executed with no delay asynchronously in a ThreadPool there also are usual {@link ThreadPoolExecutor ThreadPools} that can grow/shrink according to their load.: - *

    - *
  • {@link #_generalPacketsThreadPool GeneralPackets} where most packets handler are executed.
  • - *
  • {@link #_ioPacketsThreadPool I/O Packets} where all the i/o packets are executed.
  • - *
  • There will be an AI ThreadPool where AI events should be executed
  • - *
  • A general ThreadPool where everything else that needs to run asynchronously with no delay should be executed updates, SQL updates/inserts...)?
  • - *
- *

- * @author -Wooden- */ -public class ThreadPoolManager +public final class ThreadPoolManager { - private static final Logger LOGGER = Logger.getLogger(ThreadPoolManager.class.getName()); + protected static final Logger LOG = Logger.getLogger(ThreadPoolManager.class.getName()); - public static final class RunnableWrapper implements Runnable + private static final long MAX_DELAY = TimeUnit.NANOSECONDS.toMillis(Long.MAX_VALUE - System.nanoTime()) / 2; + + private static int _threadPoolRandomizer; + + protected static ScheduledThreadPoolExecutor[] _scheduledPools; + protected static ThreadPoolExecutor[] _instantPools; + + /** + * Init the different pools, based on Config. It is launched only once, on Gameserver instance. + */ + public static void init() { - private final Runnable _r; - - public RunnableWrapper(Runnable r) + // Feed scheduled pool. + int poolCount = Config.SCHEDULED_THREAD_POOL_COUNT; + if (poolCount == -1) { - _r = r; + poolCount = Runtime.getRuntime().availableProcessors(); } - @Override - public final void run() + _scheduledPools = new ScheduledThreadPoolExecutor[poolCount]; + for (int i = 0; i < poolCount; i++) { - try - { - _r.run(); - } - catch (Throwable e) - { - final Thread t = Thread.currentThread(); - final UncaughtExceptionHandler h = t.getUncaughtExceptionHandler(); - if (h != null) - { - h.uncaughtException(t, e); - } - } + _scheduledPools[i] = new ScheduledThreadPoolExecutor(Config.THREADS_PER_SCHEDULED_THREAD_POOL); } - } - - protected ScheduledThreadPoolExecutor _effectsScheduledThreadPool; - protected ScheduledThreadPoolExecutor _generalScheduledThreadPool; - protected ScheduledThreadPoolExecutor _aiScheduledThreadPool; - protected ScheduledThreadPoolExecutor _eventScheduledThreadPool; - private final ThreadPoolExecutor _generalPacketsThreadPool; - private final ThreadPoolExecutor _ioPacketsThreadPool; - private final ThreadPoolExecutor _generalThreadPool; - private final ThreadPoolExecutor _eventThreadPool; - - private boolean _shutdown; - - public static ThreadPoolManager getInstance() - { - return SingletonHolder._instance; - } - - protected ThreadPoolManager() - { - _effectsScheduledThreadPool = new ScheduledThreadPoolExecutor(Config.THREAD_P_EFFECTS, new PriorityThreadFactory("EffectsSTPool", Thread.NORM_PRIORITY)); - _generalScheduledThreadPool = new ScheduledThreadPoolExecutor(Config.THREAD_P_GENERAL, new PriorityThreadFactory("GeneralSTPool", Thread.NORM_PRIORITY)); - _eventScheduledThreadPool = new ScheduledThreadPoolExecutor(Config.THREAD_E_EVENTS, new PriorityThreadFactory("EventSTPool", Thread.NORM_PRIORITY)); - _ioPacketsThreadPool = new ThreadPoolExecutor(Config.IO_PACKET_THREAD_CORE_SIZE, Integer.MAX_VALUE, 5L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(), new PriorityThreadFactory("I/O Packet Pool", Thread.NORM_PRIORITY + 1)); - _generalPacketsThreadPool = new ThreadPoolExecutor(Config.GENERAL_PACKET_THREAD_CORE_SIZE, Config.GENERAL_PACKET_THREAD_CORE_SIZE + 2, 15L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(), new PriorityThreadFactory("Normal Packet Pool", Thread.NORM_PRIORITY + 1)); - _generalThreadPool = new ThreadPoolExecutor(Config.GENERAL_THREAD_CORE_SIZE, Config.GENERAL_THREAD_CORE_SIZE + 2, 5L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(), new PriorityThreadFactory("General Pool", Thread.NORM_PRIORITY)); - _aiScheduledThreadPool = new ScheduledThreadPoolExecutor(Config.AI_MAX_THREAD, new PriorityThreadFactory("AISTPool", Thread.NORM_PRIORITY)); - _eventThreadPool = new ThreadPoolExecutor(Config.EVENT_MAX_THREAD, Config.EVENT_MAX_THREAD + 2, 5L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(), new PriorityThreadFactory("Event Pool", Thread.NORM_PRIORITY)); - scheduleGeneralAtFixedRate(new PurgeTask(), 10, 5, TimeUnit.MINUTES); + // Feed instant pool. + poolCount = Config.INSTANT_THREAD_POOL_COUNT; + if (poolCount == -1) + { + poolCount = Runtime.getRuntime().availableProcessors(); + } + + _instantPools = new ThreadPoolExecutor[poolCount]; + for (int i = 0; i < poolCount; i++) + { + _instantPools[i] = new ThreadPoolExecutor(Config.THREADS_PER_INSTANT_THREAD_POOL, Config.THREADS_PER_INSTANT_THREAD_POOL, 0, TimeUnit.SECONDS, new ArrayBlockingQueue(100000)); + } + + // Prestart core threads. + for (ScheduledThreadPoolExecutor threadPool : _scheduledPools) + { + threadPool.prestartAllCoreThreads(); + } + + for (ThreadPoolExecutor threadPool : _instantPools) + { + threadPool.prestartAllCoreThreads(); + } + + // Launch purge task. + scheduleAtFixedRate(() -> + { + purge(); + }, 600000, 600000); + + LOG.info("ThreadPoolManager: Initialized " + getPoolSize(_instantPools) + "/" + getMaximumPoolSize(_instantPools) + " instant thread(s)."); + LOG.info("ThreadPoolManager: Initialized " + getPoolSize(_scheduledPools) + "/" + getMaximumPoolSize(_scheduledPools) + " scheduled thread(s)."); + } + + public static void purge() + { + for (ScheduledThreadPoolExecutor threadPool1 : _scheduledPools) + { + threadPool1.purge(); + } + for (ThreadPoolExecutor threadPool2 : _instantPools) + { + threadPool2.purge(); + } } /** - * Schedules an effect task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in the given time unit - * @param unit the time unit of the delay parameter - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation + * Schedules a one-shot action that becomes enabled after a delay. The pool is chosen based on pools activity. + * @param r : the task to execute. + * @param delay : the time from now to delay execution. + * @return a ScheduledFuture representing pending completion of the task and whose get() method will return null upon completion. */ - public ScheduledFuture scheduleEffect(Runnable task, long delay, TimeUnit unit) + public static ScheduledFuture schedule(Runnable r, long delay) { try { - return _effectsScheduledThreadPool.schedule(new RunnableWrapper(task), delay, unit); + return getPool(_scheduledPools).schedule(new TaskWrapper(r), validate(delay), TimeUnit.MILLISECONDS); } - catch (RejectedExecutionException e) + catch (Exception e) { return null; } } /** - * Schedules an effect task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation + * Schedules a periodic action that becomes enabled after a delay. The pool is chosen based on pools activity. + * @param r : the task to execute. + * @param delay : the time from now to delay execution. + * @param period : the period between successive executions. + * @return a ScheduledFuture representing pending completion of the task and whose get() method will throw an exception upon cancellation. */ - public ScheduledFuture scheduleEffect(Runnable task, long delay) - { - return scheduleEffect(task, delay, TimeUnit.MILLISECONDS); - } - - /** - * Schedules an effect task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in the given time unit - * @param period the period between executions in the given time unit - * @param unit the time unit of the initialDelay and period parameters - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleEffectAtFixedRate(Runnable task, long initialDelay, long period, TimeUnit unit) + public static ScheduledFuture scheduleAtFixedRate(Runnable r, long delay, long period) { try { - return _effectsScheduledThreadPool.scheduleAtFixedRate(new RunnableWrapper(task), initialDelay, period, unit); + return getPool(_scheduledPools).scheduleAtFixedRate(new TaskWrapper(r), validate(delay), validate(period), TimeUnit.MILLISECONDS); } - catch (RejectedExecutionException e) + catch (Exception e) { - return null; /* shutdown, ignore */ + return null; } } /** - * Schedules an effect task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in milliseconds - * @param period the period between executions in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation + * Executes the given task sometime in the future. + * @param r : the task to execute. */ - public ScheduledFuture scheduleEffectAtFixedRate(Runnable task, long initialDelay, long period) - { - return scheduleEffectAtFixedRate(task, initialDelay, period, TimeUnit.MILLISECONDS); - } - - /** - * Schedules a general task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in the given time unit - * @param unit the time unit of the delay parameter - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleGeneral(Runnable task, long delay, TimeUnit unit) + public static void execute(Runnable r) { try { - return _generalScheduledThreadPool.schedule(new RunnableWrapper(task), delay, unit); + getPool(_instantPools).execute(new TaskWrapper(r)); } - catch (RejectedExecutionException e) + catch (Exception e) { - return null; /* shutdown, ignore */ } } - /** - * Schedules a general task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleGeneral(Runnable task, long delay) + public static String[] getStats() { - return scheduleGeneral(task, delay, TimeUnit.MILLISECONDS); + List stats = new ArrayList<>(); + for (int i = 0; i < _scheduledPools.length; i++) + { + final ScheduledThreadPoolExecutor threadPool = _scheduledPools[i]; + stats.add("Scheduled pool #" + i + ":"); + stats.add(" |- ActiveCount: ...... " + threadPool.getActiveCount()); + stats.add(" |- CorePoolSize: ..... " + threadPool.getCorePoolSize()); + stats.add(" |- PoolSize: ......... " + threadPool.getPoolSize()); + stats.add(" |- LargestPoolSize: .. " + threadPool.getLargestPoolSize()); + stats.add(" |- MaximumPoolSize: .. " + threadPool.getMaximumPoolSize()); + stats.add(" |- CompletedTaskCount: " + threadPool.getCompletedTaskCount()); + stats.add(" |- QueuedTaskCount: .. " + threadPool.getQueue().size()); + stats.add(" |- TaskCount: ........ " + threadPool.getTaskCount()); + stats.add(" | -------"); + } + for (int i = 0; i < _instantPools.length; i++) + { + final ThreadPoolExecutor threadPool = _instantPools[i]; + stats.add("Scheduled pool #" + i + ":"); + stats.add(" |- ActiveCount: ...... " + threadPool.getActiveCount()); + stats.add(" |- CorePoolSize: ..... " + threadPool.getCorePoolSize()); + stats.add(" |- PoolSize: ......... " + threadPool.getPoolSize()); + stats.add(" |- LargestPoolSize: .. " + threadPool.getLargestPoolSize()); + stats.add(" |- MaximumPoolSize: .. " + threadPool.getMaximumPoolSize()); + stats.add(" |- CompletedTaskCount: " + threadPool.getCompletedTaskCount()); + stats.add(" |- QueuedTaskCount: .. " + threadPool.getQueue().size()); + stats.add(" |- TaskCount: ........ " + threadPool.getTaskCount()); + stats.add(" | -------"); + } + return stats.toArray(new String[stats.size()]); } /** - * Schedules a general task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in the given time unit - * @param period the period between executions in the given time unit - * @param unit the time unit of the initialDelay and period parameters - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation + * Shutdown thread pooling system correctly. Send different informations. */ - public ScheduledFuture scheduleGeneralAtFixedRate(Runnable task, long initialDelay, long period, TimeUnit unit) + public static void shutdown() { try { - return _generalScheduledThreadPool.scheduleAtFixedRate(new RunnableWrapper(task), initialDelay, period, unit); - } - catch (RejectedExecutionException e) - { - return null; /* shutdown, ignore */ - } - } - - /** - * Schedules a event task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in the given time unit - * @param unit the time unit of the delay parameter - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleEvent(Runnable task, long delay, TimeUnit unit) - { - try - { - return _eventScheduledThreadPool.schedule(new RunnableWrapper(task), delay, unit); - } - catch (RejectedExecutionException e) - { - return null; /* shutdown, ignore */ - } - } - - /** - * Schedules a event task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleEvent(Runnable task, long delay) - { - return scheduleEvent(task, delay, TimeUnit.MILLISECONDS); - } - - /** - * Schedules a event task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in the given time unit - * @param period the period between executions in the given time unit - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleEventAtFixedRate(Runnable task, long initialDelay, long period) - { - return scheduleEventAtFixedRate(task, initialDelay, period, TimeUnit.MILLISECONDS); - } - - /** - * Schedules a event task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in the given time unit - * @param period the period between executions in the given time unit - * @param unit the time unit of the initialDelay and period parameters - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleEventAtFixedRate(Runnable task, long initialDelay, long period, TimeUnit unit) - { - try - { - return _eventScheduledThreadPool.scheduleAtFixedRate(new RunnableWrapper(task), initialDelay, period, unit); - } - catch (RejectedExecutionException e) - { - return null; /* shutdown, ignore */ - } - } - - /** - * Schedules a general task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in milliseconds - * @param period the period between executions in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleGeneralAtFixedRate(Runnable task, long initialDelay, long period) - { - return scheduleGeneralAtFixedRate(task, initialDelay, period, TimeUnit.MILLISECONDS); - } - - /** - * Schedules an AI task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in the given time unit - * @param unit the time unit of the delay parameter - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleAi(Runnable task, long delay, TimeUnit unit) - { - try - { - return _aiScheduledThreadPool.schedule(new RunnableWrapper(task), delay, unit); - } - catch (RejectedExecutionException e) - { - return null; /* shutdown, ignore */ - } - } - - /** - * Schedules an AI task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleAi(Runnable task, long delay) - { - return scheduleAi(task, delay, TimeUnit.MILLISECONDS); - } - - /** - * Schedules a general task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in the given time unit - * @param period the period between executions in the given time unit - * @param unit the time unit of the initialDelay and period parameters - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleAiAtFixedRate(Runnable task, long initialDelay, long period, TimeUnit unit) - { - try - { - return _aiScheduledThreadPool.scheduleAtFixedRate(new RunnableWrapper(task), initialDelay, period, unit); - } - catch (RejectedExecutionException e) - { - return null; /* shutdown, ignore */ - } - } - - /** - * Schedules a general task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in milliseconds - * @param period the period between executions in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleAiAtFixedRate(Runnable task, long initialDelay, long period) - { - return scheduleAiAtFixedRate(task, initialDelay, period, TimeUnit.MILLISECONDS); - } - - /** - * Executes a packet task sometime in future in another thread. - * @param task the task to execute - */ - public void executePacket(Runnable task) - { - try - { - _generalPacketsThreadPool.execute(task); - } - catch (RejectedExecutionException e) - { - /* shutdown, ignore */ - } - } - - /** - * Executes an IO packet task sometime in future in another thread. - * @param task the task to execute - */ - public void executeIOPacket(Runnable task) - { - try - { - _ioPacketsThreadPool.execute(task); - } - catch (RejectedExecutionException e) - { - /* shutdown, ignore */ - } - } - - /** - * Executes a general task sometime in future in another thread. - * @param task the task to execute - */ - public void executeGeneral(Runnable task) - { - try - { - _generalThreadPool.execute(new RunnableWrapper(task)); - } - catch (RejectedExecutionException e) - { - /* shutdown, ignore */ - } - } - - /** - * Executes an AI task sometime in future in another thread. - * @param task the task to execute - */ - public void executeAi(Runnable task) - { - try - { - _aiScheduledThreadPool.execute(new RunnableWrapper(task)); - } - catch (RejectedExecutionException e) - { - /* shutdown, ignore */ - } - } - - /** - * Executes an Event task sometime in future in another thread. - * @param task the task to execute - */ - public void executeEvent(Runnable task) - { - try - { - _eventThreadPool.execute(new RunnableWrapper(task)); - } - catch (RejectedExecutionException e) - { - /* shutdown, ignore */ - } - } - - public StatsSet getStats(String category) - { - final StatsSet StatsSet = new StatsSet(); - - switch (category) - { - case "EFFECTS": - { - StatsSet.set("ActiveThreads", _effectsScheduledThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _effectsScheduledThreadPool.getCorePoolSize()); - StatsSet.set("PoolSize", _effectsScheduledThreadPool.getPoolSize()); - StatsSet.set("MaximumPoolSize", _effectsScheduledThreadPool.getMaximumPoolSize()); - StatsSet.set("CompletedTasks", (int) _effectsScheduledThreadPool.getCompletedTaskCount()); - StatsSet.set("ScheduledTasks", _effectsScheduledThreadPool.getQueue().size()); - break; - } - case "GENERAL": - { - StatsSet.set("ActiveThreads", _generalScheduledThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSizes", _generalScheduledThreadPool.getCorePoolSize()); - StatsSet.set("PoolSizes", _generalScheduledThreadPool.getPoolSize()); - StatsSet.set("MaximumPoolSizes", _generalScheduledThreadPool.getMaximumPoolSize()); - StatsSet.set("CompletedTasks", (int) _generalScheduledThreadPool.getCompletedTaskCount()); - StatsSet.set("ScheduledTasks", _generalScheduledThreadPool.getQueue().size()); - break; - } - case "AI": - { - StatsSet.set("ActiveThreads", _aiScheduledThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _aiScheduledThreadPool.getCorePoolSize()); - StatsSet.set("PoolSize", _aiScheduledThreadPool.getPoolSize()); - StatsSet.set("MaximumPoolSize", _aiScheduledThreadPool.getMaximumPoolSize()); - StatsSet.set("CompletedTasks", (int) _aiScheduledThreadPool.getCompletedTaskCount()); - StatsSet.set("ScheduledTasks", _aiScheduledThreadPool.getQueue().size()); - break; - } - case "EVENT": - { - StatsSet.set("ActiveThreads", _eventScheduledThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _eventScheduledThreadPool.getCorePoolSize()); - StatsSet.set("PoolSize", _eventScheduledThreadPool.getPoolSize()); - StatsSet.set("MaximumPoolSize", _eventScheduledThreadPool.getMaximumPoolSize()); - StatsSet.set("CompletedTasks", (int) _eventScheduledThreadPool.getCompletedTaskCount()); - StatsSet.set("ScheduledTasks", _eventScheduledThreadPool.getQueue().size()); - break; - } - case "PACKETS": - { - StatsSet.set("ActiveThreads", _generalPacketsThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _generalPacketsThreadPool.getCorePoolSize()); - StatsSet.set("MaximumPoolSize", _generalPacketsThreadPool.getMaximumPoolSize()); - StatsSet.set("LargestPoolSize", _generalPacketsThreadPool.getLargestPoolSize()); - StatsSet.set("PoolSize", _generalPacketsThreadPool.getPoolSize()); - StatsSet.set("CompletedTasks", (int) _generalPacketsThreadPool.getCompletedTaskCount()); - StatsSet.set("QueuedTasks", _generalPacketsThreadPool.getQueue().size()); - break; - } - case "IOPACKETS": - { - StatsSet.set("ActiveThreads", _ioPacketsThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _ioPacketsThreadPool.getCorePoolSize()); - StatsSet.set("MaximumPoolSize", _ioPacketsThreadPool.getMaximumPoolSize()); - StatsSet.set("LargestPoolSize", _ioPacketsThreadPool.getLargestPoolSize()); - StatsSet.set("PoolSize", _ioPacketsThreadPool.getPoolSize()); - StatsSet.set("CompletedTasks", (int) _ioPacketsThreadPool.getCompletedTaskCount()); - StatsSet.set("QueuedTasks", _ioPacketsThreadPool.getQueue().size()); - break; - } - case "GENERAL_TASKS": - { - StatsSet.set("ActiveThreads", _generalThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _generalThreadPool.getCorePoolSize()); - StatsSet.set("MaximumPoolSize", _generalThreadPool.getMaximumPoolSize()); - StatsSet.set("LargestPoolSize", _generalThreadPool.getLargestPoolSize()); - StatsSet.set("PoolSize", _generalThreadPool.getPoolSize()); - StatsSet.set("CompletedTasks", (int) _generalThreadPool.getCompletedTaskCount()); - StatsSet.set("QueuedTasks", _generalThreadPool.getQueue().size()); - break; - } - case "EVENT_TASKS": - { - StatsSet.set("ActiveThreads", _eventThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _eventThreadPool.getCorePoolSize()); - StatsSet.set("MaximumPoolSize", _eventThreadPool.getMaximumPoolSize()); - StatsSet.set("LargestPoolSize", _eventThreadPool.getLargestPoolSize()); - StatsSet.set("PoolSize", _eventThreadPool.getPoolSize()); - StatsSet.set("CompletedTasks", (int) _eventThreadPool.getCompletedTaskCount()); - StatsSet.set("QueuedTasks", _eventThreadPool.getQueue().size()); - break; - } - } - return StatsSet; - } - - public String[] getStats() - { - return new String[] - { - "STP:", - " + Effects:", - " |- ActiveThreads: " + _effectsScheduledThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _effectsScheduledThreadPool.getCorePoolSize(), - " |- PoolSize: " + _effectsScheduledThreadPool.getPoolSize(), - " |- MaximumPoolSize: " + _effectsScheduledThreadPool.getMaximumPoolSize(), - " |- CompletedTasks: " + _effectsScheduledThreadPool.getCompletedTaskCount(), - " |- ScheduledTasks: " + _effectsScheduledThreadPool.getQueue().size(), - " | -------", - " + General:", - " |- ActiveThreads: " + _generalScheduledThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _generalScheduledThreadPool.getCorePoolSize(), - " |- PoolSize: " + _generalScheduledThreadPool.getPoolSize(), - " |- MaximumPoolSize: " + _generalScheduledThreadPool.getMaximumPoolSize(), - " |- CompletedTasks: " + _generalScheduledThreadPool.getCompletedTaskCount(), - " |- ScheduledTasks: " + _generalScheduledThreadPool.getQueue().size(), - " | -------", - " + AI:", - " |- ActiveThreads: " + _aiScheduledThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _aiScheduledThreadPool.getCorePoolSize(), - " |- PoolSize: " + _aiScheduledThreadPool.getPoolSize(), - " |- MaximumPoolSize: " + _aiScheduledThreadPool.getMaximumPoolSize(), - " |- CompletedTasks: " + _aiScheduledThreadPool.getCompletedTaskCount(), - " |- ScheduledTasks: " + _aiScheduledThreadPool.getQueue().size(), - " | -------", - " + Event:", - " |- ActiveThreads: " + _eventScheduledThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _eventScheduledThreadPool.getCorePoolSize(), - " |- PoolSize: " + _eventScheduledThreadPool.getPoolSize(), - " |- MaximumPoolSize: " + _eventScheduledThreadPool.getMaximumPoolSize(), - " |- CompletedTasks: " + _eventScheduledThreadPool.getCompletedTaskCount(), - " |- ScheduledTasks: " + _eventScheduledThreadPool.getQueue().size(), - "TP:", - " + Packets:", - " |- ActiveThreads: " + _generalPacketsThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _generalPacketsThreadPool.getCorePoolSize(), - " |- MaximumPoolSize: " + _generalPacketsThreadPool.getMaximumPoolSize(), - " |- LargestPoolSize: " + _generalPacketsThreadPool.getLargestPoolSize(), - " |- PoolSize: " + _generalPacketsThreadPool.getPoolSize(), - " |- CompletedTasks: " + _generalPacketsThreadPool.getCompletedTaskCount(), - " |- QueuedTasks: " + _generalPacketsThreadPool.getQueue().size(), - " | -------", - " + I/O Packets:", - " |- ActiveThreads: " + _ioPacketsThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _ioPacketsThreadPool.getCorePoolSize(), - " |- MaximumPoolSize: " + _ioPacketsThreadPool.getMaximumPoolSize(), - " |- LargestPoolSize: " + _ioPacketsThreadPool.getLargestPoolSize(), - " |- PoolSize: " + _ioPacketsThreadPool.getPoolSize(), - " |- CompletedTasks: " + _ioPacketsThreadPool.getCompletedTaskCount(), - " |- QueuedTasks: " + _ioPacketsThreadPool.getQueue().size(), - " | -------", - " + General Tasks:", - " |- ActiveThreads: " + _generalThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _generalThreadPool.getCorePoolSize(), - " |- MaximumPoolSize: " + _generalThreadPool.getMaximumPoolSize(), - " |- LargestPoolSize: " + _generalThreadPool.getLargestPoolSize(), - " |- PoolSize: " + _generalThreadPool.getPoolSize(), - " |- CompletedTasks: " + _generalThreadPool.getCompletedTaskCount(), - " |- QueuedTasks: " + _generalThreadPool.getQueue().size(), - " | -------", - " + Event Tasks:", - " |- ActiveThreads: " + _eventThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _eventThreadPool.getCorePoolSize(), - " |- MaximumPoolSize: " + _eventThreadPool.getMaximumPoolSize(), - " |- LargestPoolSize: " + _eventThreadPool.getLargestPoolSize(), - " |- PoolSize: " + _eventThreadPool.getPoolSize(), - " |- CompletedTasks: " + _eventThreadPool.getCompletedTaskCount(), - " |- QueuedTasks: " + _eventThreadPool.getQueue().size(), - " | -------" - }; - } - - private static class PriorityThreadFactory implements ThreadFactory - { - private final int _prio; - private final String _name; - private final AtomicInteger _threadNumber = new AtomicInteger(1); - private final ThreadGroup _group; - - public PriorityThreadFactory(String name, int prio) - { - _prio = prio; - _name = name; - _group = new ThreadGroup(_name); - } - - @Override - public Thread newThread(Runnable r) - { - final Thread t = new Thread(_group, r, _name + "-" + _threadNumber.getAndIncrement()); - t.setPriority(_prio); - return t; - } - - public ThreadGroup getGroup() - { - return _group; - } - } - - public void shutdown() - { - _shutdown = true; - try - { - _effectsScheduledThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _generalScheduledThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _generalPacketsThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _ioPacketsThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _generalThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _eventThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _effectsScheduledThreadPool.shutdown(); - _generalScheduledThreadPool.shutdown(); - _generalPacketsThreadPool.shutdown(); - _ioPacketsThreadPool.shutdown(); - _generalThreadPool.shutdown(); - _eventThreadPool.shutdown(); - LOGGER.info("All ThreadPools are now stopped"); + System.out.println("ThreadPoolManager: Shutting down."); - } - catch (InterruptedException e) - { - LOGGER.log(Level.WARNING, "", e); - } - } - - public boolean isShutdown() - { - return _shutdown; - } - - public void purge() - { - _effectsScheduledThreadPool.purge(); - _generalScheduledThreadPool.purge(); - _aiScheduledThreadPool.purge(); - _eventScheduledThreadPool.purge(); - _ioPacketsThreadPool.purge(); - _generalPacketsThreadPool.purge(); - _generalThreadPool.purge(); - _eventThreadPool.purge(); - } - - public String getPacketStats() - { - final StringBuilder sb = new StringBuilder(1000); - final ThreadFactory tf = _generalPacketsThreadPool.getThreadFactory(); - if (tf instanceof PriorityThreadFactory) - { - final PriorityThreadFactory ptf = (PriorityThreadFactory) tf; - final int count = ptf.getGroup().activeCount(); - final Thread[] threads = new Thread[count + 2]; - ptf.getGroup().enumerate(threads); - sb.append("General Packet Thread Pool:" + Config.EOL + "Tasks in the queue: " + _generalPacketsThreadPool.getQueue().size() + Config.EOL + "Showing threads stack trace:" + Config.EOL + "There should be " + count + " Threads" + Config.EOL); - for (Thread t : threads) + for (ScheduledThreadPoolExecutor threadPool : _scheduledPools) { - if (t == null) - { - continue; - } - - sb.append(t.getName()); - sb.append(Config.EOL); - for (StackTraceElement ste : t.getStackTrace()) - { - sb.append(ste); - sb.append(Config.EOL); - } + threadPool.shutdownNow(); } - } - - sb.append("Packet Tp stack traces printed."); - sb.append(Config.EOL); - return sb.toString(); - } - - public String getIOPacketStats() - { - final StringBuilder sb = new StringBuilder(1000); - final ThreadFactory tf = _ioPacketsThreadPool.getThreadFactory(); - - if (tf instanceof PriorityThreadFactory) - { - final PriorityThreadFactory ptf = (PriorityThreadFactory) tf; - final int count = ptf.getGroup().activeCount(); - final Thread[] threads = new Thread[count + 2]; - ptf.getGroup().enumerate(threads); - sb.append("I/O Packet Thread Pool:" + Config.EOL + "Tasks in the queue: " + _ioPacketsThreadPool.getQueue().size() + Config.EOL + "Showing threads stack trace:" + Config.EOL + "There should be " + count + " Threads" + Config.EOL); - for (Thread t : threads) + for (ThreadPoolExecutor threadPool : _instantPools) { - if (t == null) - { - continue; - } - - sb.append(t.getName()); - sb.append(Config.EOL); - for (StackTraceElement ste : t.getStackTrace()) - { - sb.append(ste); - sb.append(Config.EOL); - } + threadPool.shutdownNow(); } } - - sb.append("Packet Tp stack traces printed." + Config.EOL); - - return sb.toString(); - } - - public String getGeneralStats() - { - final StringBuilder sb = new StringBuilder(1000); - final ThreadFactory tf = _generalThreadPool.getThreadFactory(); - - if (tf instanceof PriorityThreadFactory) + catch (Throwable t) { - final PriorityThreadFactory ptf = (PriorityThreadFactory) tf; - final int count = ptf.getGroup().activeCount(); - final Thread[] threads = new Thread[count + 2]; - ptf.getGroup().enumerate(threads); - sb.append("General Thread Pool:" + Config.EOL + "Tasks in the queue: " + _generalThreadPool.getQueue().size() + Config.EOL + "Showing threads stack trace:" + Config.EOL + "There should be " + +count + " Threads" + Config.EOL); - - for (Thread t : threads) - { - if (t == null) - { - continue; - } - - sb.append(t.getName()); - sb.append(Config.EOL); - for (StackTraceElement ste : t.getStackTrace()) - { - sb.append(ste); - sb.append(Config.EOL); - } - } + t.printStackTrace(); } - - sb.append("Packet Tp stack traces printed." + Config.EOL); - - return sb.toString(); } - protected class PurgeTask implements Runnable + /** + * @param : The pool type. + * @param threadPools : The pool array to check. + * @return the less fed pool. + */ + private static T getPool(T[] threadPools) { + return threadPools[_threadPoolRandomizer++ % threadPools.length]; + } + + /** + * @param delay : The delay to validate. + * @return a secured value, from 0 to MAX_DELAY. + */ + private static long validate(long delay) + { + return Math.max(0, Math.min(MAX_DELAY, delay)); + } + + /** + * @param threadPools : The pool array to check. + * @return the overall actual pools size. + */ + private static long getPoolSize(ThreadPoolExecutor[] threadPools) + { + long result = 0; + + for (ThreadPoolExecutor threadPool : threadPools) + { + result += threadPool.getPoolSize(); + } + + return result; + } + + /** + * @param threadPools : The pool array to check. + * @return the overall maximum pools size. + */ + private static long getMaximumPoolSize(ThreadPoolExecutor[] threadPools) + { + long result = 0; + + for (ThreadPoolExecutor threadPool : threadPools) + { + result += threadPool.getMaximumPoolSize(); + } + + return result; + } + + public static final class TaskWrapper implements Runnable + { + private final Runnable _runnable; + + public TaskWrapper(Runnable runnable) + { + _runnable = runnable; + } + @Override public void run() { - _effectsScheduledThreadPool.purge(); - _generalScheduledThreadPool.purge(); - _aiScheduledThreadPool.purge(); - _eventScheduledThreadPool.purge(); + try + { + _runnable.run(); + } + catch (RuntimeException e) + { + LOG.warning("Exception in a Runnable execution:" + e); + } } } - - private static class SingletonHolder - { - protected static final ThreadPoolManager _instance = new ThreadPoolManager(); - } } \ No newline at end of file diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/AbstractAI.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/AbstractAI.java index 6264f0fd61..b0de12e3a7 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/AbstractAI.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/AbstractAI.java @@ -728,7 +728,7 @@ public abstract class AbstractAI implements Ctrl setTarget(target); final int followRange = range == -1 ? Rnd.get(50, 100) : range; - _followTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(() -> + _followTask = ThreadPoolManager.scheduleAtFixedRate(() -> { try { diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/L2AttackableAI.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/L2AttackableAI.java index b2726b7a08..c363c397b5 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/L2AttackableAI.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/L2AttackableAI.java @@ -203,7 +203,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable // If not idle - create an AI task (schedule onEvtThink repeatedly) if (_aiTask == null) { - _aiTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this, 1000, 1000); + _aiTask = ThreadPoolManager.scheduleAtFixedRate(this, 1000, 1000); } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/L2CharacterAI.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/L2CharacterAI.java index f307a1741d..c5cab58d48 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/L2CharacterAI.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/L2CharacterAI.java @@ -308,7 +308,7 @@ public class L2CharacterAI extends AbstractAI if (_actor.isAttackingNow()) { - ThreadPoolManager.getInstance().scheduleGeneral(new CastTask(_actor, skill, target, item, forceUse, dontMove), _actor.getAttackEndTime() - TimeUnit.MILLISECONDS.toNanos(System.currentTimeMillis())); + ThreadPoolManager.schedule(new CastTask(_actor, skill, target, item, forceUse, dontMove), _actor.getAttackEndTime() - TimeUnit.MILLISECONDS.toNanos(System.currentTimeMillis())); } else { diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/L2DoorAI.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/L2DoorAI.java index 5df2a74538..1c536565b1 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/L2DoorAI.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/L2DoorAI.java @@ -89,7 +89,7 @@ public class L2DoorAI extends L2CharacterAI @Override protected void onEvtAttacked(L2Character attacker) { - ThreadPoolManager.getInstance().executeGeneral(new onEventAttackedDoorTask((L2DoorInstance) _actor, attacker)); + ThreadPoolManager.execute(new onEventAttackedDoorTask((L2DoorInstance) _actor, attacker)); } @Override diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/L2FortSiegeGuardAI.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/L2FortSiegeGuardAI.java index 9776e16aa8..79f39cb51d 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/L2FortSiegeGuardAI.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/L2FortSiegeGuardAI.java @@ -217,7 +217,7 @@ public class L2FortSiegeGuardAI extends L2CharacterAI implements Runnable // If not idle - create an AI task (schedule onEvtThink repeatedly) if (_aiTask == null) { - _aiTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this, 1000, 1000); + _aiTask = ThreadPoolManager.scheduleAtFixedRate(this, 1000, 1000); } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/L2SiegeGuardAI.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/L2SiegeGuardAI.java index f6d5a3b6f1..caf5f39544 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/L2SiegeGuardAI.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/L2SiegeGuardAI.java @@ -204,7 +204,7 @@ public class L2SiegeGuardAI extends L2CharacterAI implements Runnable // If not idle - create an AI task (schedule onEvtThink repeatedly) if (_aiTask == null) { - _aiTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this, 1000, 1000); + _aiTask = ThreadPoolManager.scheduleAtFixedRate(this, 1000, 1000); } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/L2SummonAI.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/L2SummonAI.java index 26c09985b0..00c00b8ff9 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/L2SummonAI.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/ai/L2SummonAI.java @@ -342,7 +342,7 @@ public class L2SummonAI extends L2PlayableAI implements Runnable { if (_avoidTask == null) { - _avoidTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this, 100, 100); + _avoidTask = ThreadPoolManager.scheduleAtFixedRate(this, 100, 100); } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/cache/WarehouseCacheManager.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/cache/WarehouseCacheManager.java index ae00f2fe33..258e120fa2 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/cache/WarehouseCacheManager.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/cache/WarehouseCacheManager.java @@ -33,7 +33,7 @@ public class WarehouseCacheManager protected WarehouseCacheManager() { - ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new CacheScheduler(), 120000, 60000); + ThreadPoolManager.scheduleAtFixedRate(new CacheScheduler(), 120000, 60000); } public void addCacheTask(L2PcInstance pc) diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/data/sql/impl/ClanTable.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/data/sql/impl/ClanTable.java index 4d4718f475..93625c6b3c 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/data/sql/impl/ClanTable.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/data/sql/impl/ClanTable.java @@ -331,7 +331,7 @@ public class ClanTable public void scheduleRemoveClan(int clanId) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { if (getClan(clanId) == null) { diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/datatables/BotReportTable.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/datatables/BotReportTable.java index aa6c03a3ac..a145b65dba 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/datatables/BotReportTable.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/datatables/BotReportTable.java @@ -421,11 +421,11 @@ public final class BotReportTable c.set(Calendar.DAY_OF_YEAR, c.get(Calendar.DAY_OF_YEAR) + 1); } - ThreadPoolManager.getInstance().scheduleGeneral(new ResetPointTask(), c.getTimeInMillis() - System.currentTimeMillis()); + ThreadPoolManager.schedule(new ResetPointTask(), c.getTimeInMillis() - System.currentTimeMillis()); } catch (Exception e) { - ThreadPoolManager.getInstance().scheduleGeneral(new ResetPointTask(), 24 * 3600 * 1000); + ThreadPoolManager.schedule(new ResetPointTask(), 24 * 3600 * 1000); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Could not properly schedule bot report points reset task. Scheduled in 24 hours.", e); } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/datatables/ItemTable.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/datatables/ItemTable.java index f506bb6e4f..29c7c41a51 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/datatables/ItemTable.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/datatables/ItemTable.java @@ -221,14 +221,14 @@ public class ItemTable if ((raid.getFirstCommandChannelAttacked() != null) && !Config.AUTO_LOOT_RAIDS) { item.setOwnerId(raid.getFirstCommandChannelAttacked().getLeaderObjectId()); - itemLootShedule = ThreadPoolManager.getInstance().scheduleGeneral(new ResetOwner(item), Config.LOOT_RAIDS_PRIVILEGE_INTERVAL); + itemLootShedule = ThreadPoolManager.schedule(new ResetOwner(item), Config.LOOT_RAIDS_PRIVILEGE_INTERVAL); item.setItemLootShedule(itemLootShedule); } } else if (!Config.AUTO_LOOT || ((reference instanceof L2EventMonsterInstance) && ((L2EventMonsterInstance) reference).eventDropOnGround())) { item.setOwnerId(actor.getObjectId()); - itemLootShedule = ThreadPoolManager.getInstance().scheduleGeneral(new ResetOwner(item), 15000); + itemLootShedule = ThreadPoolManager.schedule(new ResetOwner(item), 15000); item.setItemLootShedule(itemLootShedule); } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/idfactory/BitSetIDFactory.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/idfactory/BitSetIDFactory.java index a89517e6d8..b81189c6db 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/idfactory/BitSetIDFactory.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/idfactory/BitSetIDFactory.java @@ -53,7 +53,7 @@ public class BitSetIDFactory extends IdFactory synchronized (BitSetIDFactory.class) { - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new BitSetCapacityCheck(), 30000, 30000); + ThreadPoolManager.scheduleAtFixedRate(new BitSetCapacityCheck(), 30000, 30000); initialize(); } LOGGER.info(getClass().getSimpleName() + ": " + _freeIds.size() + " id's available."); diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/CastleManorManager.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/CastleManorManager.java index 4bf663ecee..2e64596385 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/CastleManorManager.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/CastleManorManager.java @@ -29,7 +29,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; import java.util.stream.Collectors; @@ -107,7 +106,7 @@ public final class CastleManorManager implements IGameXmlReader, IStorable // Schedule autosave if (!Config.ALT_MANOR_SAVE_ALL_ACTIONS) { - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this::storeMe, Config.ALT_MANOR_SAVE_PERIOD_RATE, Config.ALT_MANOR_SAVE_PERIOD_RATE, TimeUnit.HOURS); + ThreadPoolManager.scheduleAtFixedRate(this::storeMe, Config.ALT_MANOR_SAVE_PERIOD_RATE * 60 * 60 * 1000, Config.ALT_MANOR_SAVE_PERIOD_RATE * 60 * 60 * 1000); } // Send debug message @@ -278,7 +277,7 @@ public final class CastleManorManager implements IGameXmlReader, IStorable break; } // Schedule mode change - ThreadPoolManager.getInstance().scheduleGeneral(this::changeMode, (_nextModeChange.getTimeInMillis() - System.currentTimeMillis())); + ThreadPoolManager.schedule(this::changeMode, (_nextModeChange.getTimeInMillis() - System.currentTimeMillis())); } public final void changeMode() diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/ClanEntryManager.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/ClanEntryManager.java index 9241243a07..62d750ea6e 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/ClanEntryManager.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/ClanEntryManager.java @@ -390,7 +390,7 @@ public class ClanEntryManager private static void lockPlayer(int playerId) { - _playerLocked.put(playerId, ThreadPoolManager.getInstance().scheduleGeneral(() -> + _playerLocked.put(playerId, ThreadPoolManager.schedule(() -> { _playerLocked.remove(playerId); }, LOCK_TIME)); @@ -398,7 +398,7 @@ public class ClanEntryManager private static void lockClan(int clanId) { - _clanLocked.put(clanId, ThreadPoolManager.getInstance().scheduleGeneral(() -> + _clanLocked.put(clanId, ThreadPoolManager.schedule(() -> { _clanLocked.remove(clanId); }, LOCK_TIME)); diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/CommissionManager.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/CommissionManager.java index 03aed150d6..d15bee76d5 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/CommissionManager.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/CommissionManager.java @@ -114,7 +114,7 @@ public final class CommissionManager } else { - commissionItem.setSaleEndTask(ThreadPoolManager.getInstance().scheduleGeneral(() -> expireSale(commissionItem), Duration.between(Instant.now(), commissionItem.getEndTime()).toMillis())); + commissionItem.setSaleEndTask(ThreadPoolManager.schedule(() -> expireSale(commissionItem), Duration.between(Instant.now(), commissionItem.getEndTime()).toMillis())); } } } @@ -259,7 +259,7 @@ public final class CommissionManager if (rs.next()) { final CommissionItem commissionItem = new CommissionItem(rs.getLong(1), itemInstance, pricePerUnit, startTime, durationInDays); - final ScheduledFuture saleEndTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> expireSale(commissionItem), Duration.between(Instant.now(), commissionItem.getEndTime()).toMillis()); + final ScheduledFuture saleEndTask = ThreadPoolManager.schedule(() -> expireSale(commissionItem), Duration.between(Instant.now(), commissionItem.getEndTime()).toMillis()); commissionItem.setSaleEndTask(saleEndTask); _commissionItems.put(commissionItem.getCommissionId(), commissionItem); player.getLastCommissionInfos().put(itemInstance.getId(), new ExResponseCommissionInfo(itemInstance.getId(), pricePerUnit, itemCount, (byte) ((durationInDays - 1) / 2))); diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/DBSpawnManager.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/DBSpawnManager.java index ed96d6cd39..7c337c11d2 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/DBSpawnManager.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/DBSpawnManager.java @@ -226,7 +226,7 @@ public class DBSpawnManager { LOGGER.info(getClass().getSimpleName() + ": Updated " + npc.getName() + " respawn time to " + Util.formatDate(new Date(respawnTime), "dd.MM.yyyy HH:mm")); - _schedules.put(npc.getId(), ThreadPoolManager.getInstance().scheduleGeneral(new SpawnSchedule(npc.getId()), respawnDelay)); + _schedules.put(npc.getId(), ThreadPoolManager.schedule(new SpawnSchedule(npc.getId()), respawnDelay)); updateDb(); } } @@ -287,7 +287,7 @@ public class DBSpawnManager else { final long spawnTime = respawnTime - System.currentTimeMillis(); - _schedules.put(npcId, ThreadPoolManager.getInstance().scheduleGeneral(new SpawnSchedule(npcId), spawnTime)); + _schedules.put(npcId, ThreadPoolManager.schedule(new SpawnSchedule(npcId), spawnTime)); } _spawns.put(npcId, spawn); diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/GraciaSeedsManager.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/GraciaSeedsManager.java index a3e653654f..4f5183877e 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/GraciaSeedsManager.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/GraciaSeedsManager.java @@ -101,7 +101,7 @@ public final class GraciaSeedsManager } else { - ThreadPoolManager.getInstance().scheduleEffect(new UpdateSoDStateTask(), Config.SOD_STAGE_2_LENGTH - timePast); + ThreadPoolManager.schedule(new UpdateSoDStateTask(), Config.SOD_STAGE_2_LENGTH - timePast); } break; case 3: diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/GrandBossManager.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/GrandBossManager.java index 532b343a8a..e7c0bad9c5 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/GrandBossManager.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/GrandBossManager.java @@ -98,7 +98,7 @@ public final class GrandBossManager implements IStorable { _log.log(Level.WARNING, getClass().getSimpleName() + ": Error while initializing GrandBossManager: " + e.getMessage(), e); } - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new GrandBossManagerStoreTask(), 5 * 60 * 1000, 5 * 60 * 1000); + ThreadPoolManager.scheduleAtFixedRate(new GrandBossManagerStoreTask(), 5 * 60 * 1000, 5 * 60 * 1000); } public int getBossStatus(int bossId) diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java index 3a0a2105d7..a77eb2d2d7 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java @@ -86,7 +86,7 @@ public final class HandysBlockCheckerManager { holder.checkAndShuffle(); } - ThreadPoolManager.getInstance().executeGeneral(holder.getEvent().new StartEvent()); + ThreadPoolManager.execute(holder.getEvent().new StartEvent()); } else { @@ -364,7 +364,7 @@ public final class HandysBlockCheckerManager private void schedulePenaltyRemoval(int objId) { - ThreadPoolManager.getInstance().scheduleGeneral(new PenaltyRemoveTask(objId), 10000); + ThreadPoolManager.schedule(new PenaltyRemoveTask(objId), 10000); } /** diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/ItemsOnGroundManager.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/ItemsOnGroundManager.java index 78e9cdb6a7..6871fb1dfe 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/ItemsOnGroundManager.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/ItemsOnGroundManager.java @@ -47,7 +47,7 @@ public final class ItemsOnGroundManager implements Runnable { if (Config.SAVE_DROPPED_ITEM_INTERVAL > 0) { - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this, Config.SAVE_DROPPED_ITEM_INTERVAL, Config.SAVE_DROPPED_ITEM_INTERVAL); + ThreadPoolManager.scheduleAtFixedRate(this, Config.SAVE_DROPPED_ITEM_INTERVAL, Config.SAVE_DROPPED_ITEM_INTERVAL); } load(); } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/MailManager.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/MailManager.java index b5e05d16eb..9a562ecf61 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/MailManager.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/MailManager.java @@ -74,11 +74,11 @@ public final class MailManager if (expiration < System.currentTimeMillis()) { - ThreadPoolManager.getInstance().scheduleGeneral(new MessageDeletionTask(msgId), 10000); + ThreadPoolManager.schedule(new MessageDeletionTask(msgId), 10000); } else { - ThreadPoolManager.getInstance().scheduleGeneral(new MessageDeletionTask(msgId), expiration - System.currentTimeMillis()); + ThreadPoolManager.schedule(new MessageDeletionTask(msgId), expiration - System.currentTimeMillis()); } } } @@ -209,7 +209,7 @@ public final class MailManager receiver.sendPacket(new ExUnReadMailCount(receiver)); } - ThreadPoolManager.getInstance().scheduleGeneral(new MessageDeletionTask(msg.getId()), msg.getExpiration() - System.currentTimeMillis()); + ThreadPoolManager.schedule(new MessageDeletionTask(msg.getId()), msg.getExpiration() - System.currentTimeMillis()); } public final void markAsReadInDb(int msgId) diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/PremiumManager.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/PremiumManager.java index 9075f34c27..3e52cd93bb 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/PremiumManager.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/PremiumManager.java @@ -111,7 +111,7 @@ public class PremiumManager */ private void startExpireTask(L2PcInstance player, long delay) { - ScheduledFuture task = ThreadPoolManager.getInstance().scheduleEvent(new PremiumExpireTask(player), delay); + ScheduledFuture task = ThreadPoolManager.schedule(new PremiumExpireTask(player), delay); expiretasks.put(player.getAccountName(), task); } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/ServerRestartManager.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/ServerRestartManager.java index 1d56bd7f20..478e1f78f5 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/ServerRestartManager.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/ServerRestartManager.java @@ -71,7 +71,7 @@ public class ServerRestartManager if (lastRestart != null) { nextRestartTime = new SimpleDateFormat("HH:mm").format(lastRestart.getTime()); - ThreadPoolManager.getInstance().scheduleGeneral(new ServerRestartTask(), lastDelay - (Config.SERVER_RESTART_SCHEDULE_COUNTDOWN * 1000)); + ThreadPoolManager.schedule(new ServerRestartTask(), lastDelay - (Config.SERVER_RESTART_SCHEDULE_COUNTDOWN * 1000)); _log.info("Scheduled server restart at " + lastRestart.getTime() + "."); } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/WalkingManager.java index 9d568d65c4..3da5ea144c 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -301,14 +301,14 @@ public final class WalkingManager implements IGameXmlReader npc.sendDebugMessage("Starting to move at route '" + routeName + "'"); npc.setIsRunning(node.runToLocation()); npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, node); - walk.setWalkCheckTask(ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new StartMovingTask(npc, routeName), 60000, 60000)); // start walk check task, for resuming walk after fight + walk.setWalkCheckTask(ThreadPoolManager.scheduleAtFixedRate(new StartMovingTask(npc, routeName), 60000, 60000)); // start walk check task, for resuming walk after fight _activeRoutes.put(npc.getObjectId(), walk); // register route } else { npc.sendDebugMessage("Failed to start moving along route '" + routeName + "', scheduled"); - ThreadPoolManager.getInstance().scheduleGeneral(new StartMovingTask(npc, routeName), 60000); + ThreadPoolManager.schedule(new StartMovingTask(npc, routeName), 60000); } } else @@ -455,7 +455,7 @@ public final class WalkingManager implements IGameXmlReader walk.setLastAction(System.currentTimeMillis()); } - ThreadPoolManager.getInstance().scheduleGeneral(new ArrivedTask(npc, walk), 100 + (node.getDelay() * 1000L)); + ThreadPoolManager.schedule(new ArrivedTask(npc, walk), 100 + (node.getDelay() * 1000L)); } } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/ClanWar.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/ClanWar.java index ef54a4f680..61a97fa208 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/ClanWar.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/ClanWar.java @@ -56,7 +56,7 @@ public final class ClanWar _startTime = System.currentTimeMillis(); _state = ClanWarState.BLOOD_DECLARATION; - _cancelTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _cancelTask = ThreadPoolManager.schedule(() -> { clanWarTimeout(); }, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); @@ -88,7 +88,7 @@ public final class ClanWar if ((_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) > System.currentTimeMillis()) { - _cancelTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _cancelTask = ThreadPoolManager.schedule(() -> { clanWarTimeout(); }, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); @@ -104,7 +104,7 @@ public final class ClanWar } else { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { ClanTable.getInstance().deleteclanswars(_attackerClanId, _attackedClanId); }, endTimePeriod); @@ -200,7 +200,7 @@ public final class ClanWar _winnerClanId = winnerClan.getId(); _endTime = System.currentTimeMillis(); - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { ClanTable.getInstance().deleteclanswars(cancelor.getId(), winnerClan.getId()); }, (_endTime + TIME_TO_DELETION_AFTER_DEFEAT) - System.currentTimeMillis()); @@ -225,7 +225,7 @@ public final class ClanWar _state = ClanWarState.TIE; _endTime = System.currentTimeMillis(); - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { ClanTable.getInstance().deleteclanswars(attackerClan.getId(), attackedClan.getId()); }, (_endTime + TIME_TO_DELETION_AFTER_CANCELLATION) - System.currentTimeMillis()); diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/CreatureContainer.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/CreatureContainer.java index f64dac8385..da2d7bcc94 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/CreatureContainer.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/CreatureContainer.java @@ -63,7 +63,7 @@ public class CreatureContainer { if ((_task == null) || _task.isDone()) { - _task = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this::update, 1000L, 1000L); + _task = ThreadPoolManager.scheduleAtFixedRate(this::update, 1000L, 1000L); } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/CursedWeapon.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/CursedWeapon.java index d6361de2d2..0f821abc37 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/CursedWeapon.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/CursedWeapon.java @@ -351,7 +351,7 @@ public class CursedWeapon implements INamable { _player.stopTransformation(true); - ThreadPoolManager.getInstance().scheduleGeneral(() -> _player.transform(transformationId, true), 500); + ThreadPoolManager.schedule(() -> _player.transform(transformationId, true), 500); } else { @@ -375,7 +375,7 @@ public class CursedWeapon implements INamable } else { - _removeTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new RemoveTask(), _durationLost * 12000L, _durationLost * 12000L); + _removeTask = ThreadPoolManager.scheduleAtFixedRate(new RemoveTask(), _durationLost * 12000L, _durationLost * 12000L); } } @@ -389,7 +389,7 @@ public class CursedWeapon implements INamable // Start the Life Task _endTime = System.currentTimeMillis() + (_duration * 60000L); - _removeTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new RemoveTask(), _durationLost * 12000L, _durationLost * 12000L); + _removeTask = ThreadPoolManager.scheduleAtFixedRate(new RemoveTask(), _durationLost * 12000L, _durationLost * 12000L); return true; } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/DropProtection.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/DropProtection.java index 9147db2c59..1a62714f0e 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/DropProtection.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/DropProtection.java @@ -103,6 +103,6 @@ public class DropProtection implements Runnable throw new NullPointerException("Trying to protect dropped item to null owner"); } - _task = ThreadPoolManager.getInstance().scheduleGeneral(this, PROTECTED_MILLIS_TIME); + _task = ThreadPoolManager.schedule(this, PROTECTED_MILLIS_TIME); } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/Fishing.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/Fishing.java index 1f87ec266a..e9cfd27a75 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/Fishing.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/Fishing.java @@ -220,10 +220,10 @@ public class Fishing _player.rechargeShots(false, false, true); } - _reelInTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _reelInTask = ThreadPoolManager.schedule(() -> { _player.getFishing().reelInWithReward(); - _startFishingTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> _player.getFishing().castLine(), Rnd.get(baitData.getWaitMin(), baitData.getWaitMax())); + _startFishingTask = ThreadPoolManager.schedule(() -> _player.getFishing().castLine(), Rnd.get(baitData.getWaitMin(), baitData.getWaitMax())); }, Rnd.get(baitData.getTimeMin(), baitData.getTimeMax())); _player.stopMove(null); _player.broadcastPacket(new ExFishingStart(_player, -1, baitData.getLevel(), _baitLocation)); diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/L2Clan.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/L2Clan.java index 953a8ccc63..e7f6838bc6 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/L2Clan.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/L2Clan.java @@ -3131,7 +3131,7 @@ public class L2Clan implements IIdentifiable, INamable _vars = new ClanVariables(getId()); if (Config.CLAN_VARIABLES_STORE_INTERVAL > 0) { - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this::storeVariables, Config.CLAN_VARIABLES_STORE_INTERVAL, Config.CLAN_VARIABLES_STORE_INTERVAL); + ThreadPoolManager.scheduleAtFixedRate(this::storeVariables, Config.CLAN_VARIABLES_STORE_INTERVAL, Config.CLAN_VARIABLES_STORE_INTERVAL); } } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/L2Party.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/L2Party.java index 834811cea4..ca47799cce 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/L2Party.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/L2Party.java @@ -379,7 +379,7 @@ public class L2Party extends AbstractPlayerGroup if (_positionBroadcastTask == null) { - _positionBroadcastTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(() -> + _positionBroadcastTask = ThreadPoolManager.scheduleAtFixedRate(() -> { if (_positionPacket == null) { @@ -1084,7 +1084,7 @@ public class L2Party extends AbstractPlayerGroup } _changeRequestDistributionType = partyDistributionType; _changeDistributionTypeAnswers = new HashSet<>(); - _changeDistributionTypeRequestTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> finishLootRequest(false), PARTY_DISTRIBUTION_TYPE_REQUEST_TIMEOUT.toMillis()); + _changeDistributionTypeRequestTask = ThreadPoolManager.schedule(() -> finishLootRequest(false), PARTY_DISTRIBUTION_TYPE_REQUEST_TIMEOUT.toMillis()); broadcastToPartyMembers(getLeader(), new ExAskModifyPartyLooting(getLeader().getName(), partyDistributionType)); diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/L2Request.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/L2Request.java index c39f47f86e..a65b9b6a50 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/L2Request.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/L2Request.java @@ -123,7 +123,7 @@ public class L2Request { _isRequestor = isRequestor; _isAnswerer = !isRequestor; - ThreadPoolManager.getInstance().scheduleGeneral(() -> clear(), REQUEST_TIMEOUT * 1000); + ThreadPoolManager.schedule(() -> clear(), REQUEST_TIMEOUT * 1000); } /** diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/L2Spawn.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/L2Spawn.java index c62f2adbbe..3ddb0761ac 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/L2Spawn.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/L2Spawn.java @@ -400,7 +400,7 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable // Create a new SpawnTask to launch after the respawn Delay // ClientScheduler.getInstance().scheduleLow(new SpawnTask(npcId), _respawnDelay); - ThreadPoolManager.getInstance().scheduleGeneral(new SpawnTask(oldNpc), hasRespawnRandom() ? Rnd.get(_respawnMinDelay, _respawnMaxDelay) : _respawnMinDelay); + ThreadPoolManager.schedule(new SpawnTask(oldNpc), hasRespawnRandom() ? Rnd.get(_respawnMinDelay, _respawnMaxDelay) : _respawnMinDelay); } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/L2WorldRegion.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/L2WorldRegion.java index f7803399a2..450bb4bda4 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/L2WorldRegion.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/L2WorldRegion.java @@ -215,7 +215,7 @@ public final class L2WorldRegion } // then, set a timer to activate the neighbors - _neighborsTask = ThreadPoolManager.getInstance().scheduleGeneral(new NeighborsTask(true), 1000 * Config.GRID_NEIGHBOR_TURNON_TIME); + _neighborsTask = ThreadPoolManager.schedule(new NeighborsTask(true), 1000 * Config.GRID_NEIGHBOR_TURNON_TIME); } } @@ -235,7 +235,7 @@ public final class L2WorldRegion // start a timer to "suggest" a deactivate to self and neighbors. // suggest means: first check if a neighbor has L2PcInstances in it. If not, deactivate. - _neighborsTask = ThreadPoolManager.getInstance().scheduleGeneral(new NeighborsTask(false), 1000 * Config.GRID_NEIGHBOR_TURNOFF_TIME); + _neighborsTask = ThreadPoolManager.schedule(new NeighborsTask(false), 1000 * Config.GRID_NEIGHBOR_TURNOFF_TIME); } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/MpRewardTask.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/MpRewardTask.java index 32d3f1de5e..cf4458c3a4 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/MpRewardTask.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/MpRewardTask.java @@ -41,7 +41,7 @@ public class MpRewardTask _creature = creature; _count = new AtomicInteger(template.getMpRewardTicks()); _value = calculateBaseValue(npc, creature); - _task = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(this::run, Config.EFFECT_TICK_RATIO, Config.EFFECT_TICK_RATIO); + _task = ThreadPoolManager.scheduleAtFixedRate(this::run, Config.EFFECT_TICK_RATIO, Config.EFFECT_TICK_RATIO); } /** diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/L2Attackable.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/L2Attackable.java index db182482d9..12aee02933 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/L2Attackable.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/L2Attackable.java @@ -232,7 +232,7 @@ public class L2Attackable extends L2Npc { _commandChannelTimer = new CommandChannelTimer(this); _commandChannelLastAttack = System.currentTimeMillis(); - ThreadPoolManager.getInstance().scheduleGeneral(_commandChannelTimer, 10000); // check for last attack + ThreadPoolManager.schedule(_commandChannelTimer, 10000); // check for last attack _firstCommandChannelAttacked.broadcastPacket(new CreatureSay(0, ChatType.PARTYROOM_ALL, "", "You have looting rights!")); // TODO: retail msg } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/L2Character.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/L2Character.java index d1c3434468..9fe4844c6c 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/L2Character.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/L2Character.java @@ -1100,7 +1100,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe if (getCurrentMp() < mpConsume) { // If L2PcInstance doesn't have enough MP, stop the attack - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), 1000); + ThreadPoolManager.schedule(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), 1000); sendPacket(SystemMessageId.NOT_ENOUGH_MP); sendPacket(ActionFailed.STATIC_PACKET); return; @@ -1118,7 +1118,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe else { // Cancel the action because the bow can't be re-use at this moment - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), 1000); + ThreadPoolManager.schedule(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), 1000); sendPacket(ActionFailed.STATIC_PACKET); return; } @@ -1222,7 +1222,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe } // Notify AI with EVT_READY_TO_ACT - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), timeAtk); + ThreadPoolManager.schedule(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), timeAtk); } } @@ -1301,7 +1301,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe } // Create a new hit task with Medium priority - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk); + ThreadPoolManager.schedule(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk); // Calculate and set the disable delay of the bow in function of the Attack Speed _disableRangedAttackEndTime = ((sAtk + reuse) / GameTimeController.MILLIS_IN_TICK) + GameTimeController.getInstance().getGameTicks(); @@ -1371,10 +1371,10 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe } // Create a new hit task with Medium priority for hit 1 - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk / 2); + ThreadPoolManager.schedule(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk / 2); // Create a new hit task with Medium priority for hit 2 with a higher delay - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, target, damage2, crit2, miss2, attack.hasSoulshot(), shld2), sAtk); + ThreadPoolManager.schedule(new HitTask(this, target, damage2, crit2, miss2, attack.hasSoulshot(), shld2), sAtk); // Add those hits to the Server-Client packet Attack attack.addHit(target, damage1, miss1, crit1, shld1); @@ -1401,7 +1401,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe damage /= 2; } - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, surroundTarget, damage, crit, miss, attack.hasSoulshot(), shld), sAtk / 2); + ThreadPoolManager.schedule(new HitTask(this, surroundTarget, damage, crit, miss, attack.hasSoulshot(), shld), sAtk / 2); attack.addHit(surroundTarget, damage, miss, crit, shld); miss1 |= miss; } @@ -1421,7 +1421,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe damage /= 2; } - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, surroundTarget, damage, crit, miss, attack.hasSoulshot(), shld), sAtk); + ThreadPoolManager.schedule(new HitTask(this, surroundTarget, damage, crit, miss, attack.hasSoulshot(), shld), sAtk); attack.addHit(surroundTarget, damage, miss, crit, shld); miss2 |= miss; } @@ -1471,7 +1471,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe } // Create a new hit task with Medium priority - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk); + ThreadPoolManager.schedule(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk); // Add this hit to the Server-Client packet Attack attack.addHit(target, damage1, miss1, crit1, shld1); @@ -1495,7 +1495,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe damage = (int) Formulas.calcAutoAttackDamage(this, surroundTarget, 0, shld, crit, attack.hasSoulshot()); } - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, surroundTarget, damage, crit, miss, attack.hasSoulshot(), shld), sAtk); + ThreadPoolManager.schedule(new HitTask(this, surroundTarget, damage, crit, miss, attack.hasSoulshot(), shld), sAtk); attack.addHit(surroundTarget, damage, miss, crit, shld); miss1 |= miss; } @@ -3332,7 +3332,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe if (distFraction > 1) { - ThreadPoolManager.getInstance().executeAi(() -> getAI().notifyEvent(CtrlEvent.EVT_ARRIVED)); + ThreadPoolManager.execute(() -> getAI().notifyEvent(CtrlEvent.EVT_ARRIVED)); return true; } @@ -3773,7 +3773,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe // Create a task to notify the AI that L2Character arrives at a check point of the movement if ((ticksToMove * GameTimeController.MILLIS_IN_TICK) > 3000) { - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_ARRIVED_REVALIDATE), 2000); + ThreadPoolManager.schedule(new NotifyAITask(this, CtrlEvent.EVT_ARRIVED_REVALIDATE), 2000); } // the CtrlEvent.EVT_ARRIVED will be sent when the character will actually arrive @@ -3854,7 +3854,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe // Create a task to notify the AI that L2Character arrives at a check point of the movement if ((ticksToMove * GameTimeController.MILLIS_IN_TICK) > 3000) { - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_ARRIVED_REVALIDATE), 2000); + ThreadPoolManager.schedule(new NotifyAITask(this, CtrlEvent.EVT_ARRIVED_REVALIDATE), 2000); } // the CtrlEvent.EVT_ARRIVED will be sent when the character will actually arrive diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/L2Npc.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/L2Npc.java index f35c9ed391..018b30b595 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/L2Npc.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/L2Npc.java @@ -1216,7 +1216,7 @@ public class L2Npc extends L2Character public void scheduleDespawn(long delay) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { if (!isDecayed()) { diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/L2Vehicle.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/L2Vehicle.java index 6e1c53a7f2..f9904262c1 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/L2Vehicle.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/L2Vehicle.java @@ -87,7 +87,7 @@ public abstract class L2Vehicle extends L2Character { if (_engine != null) { - ThreadPoolManager.getInstance().scheduleGeneral(_engine, delay); + ThreadPoolManager.schedule(_engine, delay); } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2ControllableAirShipInstance.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2ControllableAirShipInstance.java index 642b3eba43..3d61e79b4e 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2ControllableAirShipInstance.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2ControllableAirShipInstance.java @@ -253,8 +253,8 @@ public class L2ControllableAirShipInstance extends L2AirShipInstance public void onSpawn() { super.onSpawn(); - _checkTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new CheckTask(), 60000, 10000); - _consumeFuelTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new ConsumeFuelTask(), 60000, 60000); + _checkTask = ThreadPoolManager.scheduleAtFixedRate(new CheckTask(), 60000, 10000); + _consumeFuelTask = ThreadPoolManager.scheduleAtFixedRate(new ConsumeFuelTask(), 60000, 60000); } @Override @@ -326,7 +326,7 @@ public class L2ControllableAirShipInstance extends L2AirShipInstance if (isSpawned() && isEmpty() && !isInDock()) { // deleteMe() can't be called from CheckTask because task should not cancel itself - ThreadPoolManager.getInstance().executeGeneral(new DecayTask()); + ThreadPoolManager.execute(new DecayTask()); } } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2DecoyInstance.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2DecoyInstance.java index 3e20bde3da..8f14bf5519 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2DecoyInstance.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2DecoyInstance.java @@ -53,8 +53,8 @@ public class L2DecoyInstance extends L2Character _totalLifeTime = totalLifeTime; _timeRemaining = _totalLifeTime; final int skilllevel = getTemplate().getDisplayId() - 13070; - _DecoyLifeTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new DecoyLifetime(getOwner(), this), 1000, 1000); - _HateSpam = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new HateSpam(this, SkillData.getInstance().getSkill(5272, skilllevel)), 2000, 5000); + _DecoyLifeTask = ThreadPoolManager.scheduleAtFixedRate(new DecoyLifetime(getOwner(), this), 1000, 1000); + _HateSpam = ThreadPoolManager.scheduleAtFixedRate(new HateSpam(this, SkillData.getInstance().getSkill(5272, skilllevel)), 2000, 5000); } @Override diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2DoorInstance.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2DoorInstance.java index 76153869d2..7dfa85a48b 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2DoorInstance.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2DoorInstance.java @@ -107,7 +107,7 @@ public final class L2DoorInstance extends L2Character { delay += Rnd.get(getTemplate().getRandomTime()); } - ThreadPoolManager.getInstance().scheduleGeneral(new TimerOpen(), delay * 1000); + ThreadPoolManager.schedule(new TimerOpen(), delay * 1000); } @Override @@ -646,7 +646,7 @@ public final class L2DoorInstance extends L2Character _autoCloseTask = null; oldTask.cancel(false); } - _autoCloseTask = ThreadPoolManager.getInstance().scheduleGeneral(new AutoClose(), getTemplate().getCloseTime() * 1000); + _autoCloseTask = ThreadPoolManager.schedule(new AutoClose(), getTemplate().getCloseTime() * 1000); } class AutoClose implements Runnable @@ -681,7 +681,7 @@ public final class L2DoorInstance extends L2Character { delay += Rnd.get(getTemplate().getRandomTime()); } - ThreadPoolManager.getInstance().scheduleGeneral(this, delay * 1000); + ThreadPoolManager.schedule(this, delay * 1000); } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2FortCommanderInstance.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2FortCommanderInstance.java index cdbc48a84e..56c68106bc 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2FortCommanderInstance.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2FortCommanderInstance.java @@ -145,7 +145,7 @@ public class L2FortCommanderInstance extends L2DefenderInstance { broadcastSay(ChatType.NPC_SHOUT, npcString, npcString.getParamCount() == 1 ? attacker.getName() : null); setCanTalk(false); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleTalkTask(), 10000); + ThreadPoolManager.schedule(new ScheduleTalkTask(), 10000); } } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2PcInstance.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2PcInstance.java index cada75c56c..bfd631cc8e 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2PcInstance.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2PcInstance.java @@ -819,7 +819,7 @@ public final class L2PcInstance extends L2Playable if (_PvPRegTask == null) { - _PvPRegTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new PvPFlagTask(this), 1000, 1000); + _PvPRegTask = ThreadPoolManager.scheduleAtFixedRate(new PvPFlagTask(this), 1000, 1000); } } @@ -2823,7 +2823,7 @@ public final class L2PcInstance extends L2Playable getAI().setIntention(CtrlIntention.AI_INTENTION_REST); broadcastPacket(new ChangeWaitType(this, ChangeWaitType.WT_SITTING)); // Schedule a sit down task to wait for the animation to finish - ThreadPoolManager.getInstance().scheduleGeneral(new SitDownTask(this), 2500); + ThreadPoolManager.schedule(new SitDownTask(this), 2500); setBlockActions(true); } } @@ -2846,7 +2846,7 @@ public final class L2PcInstance extends L2Playable broadcastPacket(new ChangeWaitType(this, ChangeWaitType.WT_STANDING)); // Schedule a stand up task to wait for the animation to finish - ThreadPoolManager.getInstance().scheduleGeneral(new StandUpTask(this), 2500); + ThreadPoolManager.schedule(new StandUpTask(this), 2500); } } @@ -4303,7 +4303,7 @@ public final class L2PcInstance extends L2Playable } if (Config.GAMEGUARD_ENFORCE) { - ThreadPoolManager.getInstance().scheduleGeneral(new GameGuardCheckTask(this), 30 * 1000); + ThreadPoolManager.schedule(new GameGuardCheckTask(this), 30 * 1000); } } @@ -8515,7 +8515,7 @@ public final class L2PcInstance extends L2Playable _inventoryDisable = val; if (val) { - ThreadPoolManager.getInstance().scheduleGeneral(new InventoryEnableTask(this), 1500); + ThreadPoolManager.schedule(new InventoryEnableTask(this), 1500); } } @@ -9817,7 +9817,7 @@ public final class L2PcInstance extends L2Playable { if (_taskWarnUserTakeBreak == null) { - _taskWarnUserTakeBreak = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new WarnUserTakeBreakTask(this), 3600000, 3600000); + _taskWarnUserTakeBreak = ThreadPoolManager.scheduleAtFixedRate(new WarnUserTakeBreakTask(this), 3600000, 3600000); } } @@ -9843,7 +9843,7 @@ public final class L2PcInstance extends L2Playable { if (_taskRentPet == null) { - _taskRentPet = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new RentPetTask(this), seconds * 1000L, seconds * 1000L); + _taskRentPet = ThreadPoolManager.scheduleAtFixedRate(new RentPetTask(this), seconds * 1000L, seconds * 1000L); } } @@ -9874,7 +9874,7 @@ public final class L2PcInstance extends L2Playable final int timeinwater = (int) getStat().getValue(Stats.BREATH, 60000); sendPacket(new SetupGauge(getObjectId(), 2, timeinwater)); - _taskWater = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new WaterTask(this), timeinwater, 1000); + _taskWater = ThreadPoolManager.scheduleAtFixedRate(new WaterTask(this), timeinwater, 1000); } } @@ -10255,7 +10255,7 @@ public final class L2PcInstance extends L2Playable { if (_teleportWatchdog == null) { - _teleportWatchdog = ThreadPoolManager.getInstance().scheduleGeneral(new TeleportWatchdogTask(this), Config.TELEPORT_WATCHDOG_TIMEOUT * 1000); + _teleportWatchdog = ThreadPoolManager.schedule(new TeleportWatchdogTask(this), Config.TELEPORT_WATCHDOG_TIMEOUT * 1000); } } } @@ -11145,7 +11145,7 @@ public final class L2PcInstance extends L2Playable } if (_fameTask == null) { - _fameTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FameTask(this, fameFixRate), delay, delay); + _fameTask = ThreadPoolManager.scheduleAtFixedRate(new FameTask(this, fameFixRate), delay, delay); } } @@ -11265,7 +11265,7 @@ public final class L2PcInstance extends L2Playable _soulTask.cancel(false); _soulTask = null; } - _soulTask = ThreadPoolManager.getInstance().scheduleGeneral(new ResetSoulsTask(this), 600000); + _soulTask = ThreadPoolManager.schedule(new ResetSoulsTask(this), 600000); } @@ -11608,7 +11608,7 @@ public final class L2PcInstance extends L2Playable sendPacket(new SetupGauge(3, (getCurrentFeed() * 10000) / getFeedConsume(), (getMaxFeed() * 10000) / getFeedConsume())); if (!isDead()) { - _mountFeedTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new PetFeedTask(this), 10000, 10000); + _mountFeedTask = ThreadPoolManager.scheduleAtFixedRate(new PetFeedTask(this), 10000, 10000); } } else if (_canFeed) @@ -11618,7 +11618,7 @@ public final class L2PcInstance extends L2Playable sendPacket(sg); if (!isDead()) { - _mountFeedTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new PetFeedTask(this), 10000, 10000); + _mountFeedTask = ThreadPoolManager.scheduleAtFixedRate(new PetFeedTask(this), 10000, 10000); } } } @@ -11695,7 +11695,7 @@ public final class L2PcInstance extends L2Playable public void enteredNoLanding(int delay) { - _dismountTask = ThreadPoolManager.getInstance().scheduleGeneral(new DismountTask(this), delay * 1000); + _dismountTask = ThreadPoolManager.schedule(new DismountTask(this), delay * 1000); } public void exitedNoLanding() @@ -11816,7 +11816,7 @@ public final class L2PcInstance extends L2Playable _chargeTask.cancel(false); _chargeTask = null; } - _chargeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ResetChargesTask(this), 600000); + _chargeTask = ThreadPoolManager.schedule(new ResetChargesTask(this), 600000); } /** @@ -12881,7 +12881,7 @@ public final class L2PcInstance extends L2Playable public void startRecoGiveTask() { // Create task to give new recommendations - _recoGiveTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new RecoGiveTask(this), 7200000, 3600000); + _recoGiveTask = ThreadPoolManager.scheduleAtFixedRate(new RecoGiveTask(this), 7200000, 3600000); // Store new data storeRecommendations(); @@ -13810,7 +13810,7 @@ public final class L2PcInstance extends L2Playable stopOnlineTimeUpdateTask(); } - _onlineTimeUpdateTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this::updateOnlineTime, 60 * 1000L, 60 * 1000L); + _onlineTimeUpdateTask = ThreadPoolManager.scheduleAtFixedRate(this::updateOnlineTime, 60 * 1000L, 60 * 1000L); } private void updateOnlineTime() diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2PetInstance.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2PetInstance.java index 026d13c866..9b9c9b794d 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2PetInstance.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2PetInstance.java @@ -1130,7 +1130,7 @@ public class L2PetInstance extends L2Summon stopFeed(); if (!isDead() && (getOwner().getPet() == this)) { - _feedTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FeedTask(), 10000, 10000); + _feedTask = ThreadPoolManager.scheduleAtFixedRate(new FeedTask(), 10000, 10000); } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2RaceManagerInstance.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2RaceManagerInstance.java index 56e09123e5..9896791a73 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2RaceManagerInstance.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2RaceManagerInstance.java @@ -106,27 +106,26 @@ public class L2RaceManagerInstance extends L2Npc _managers = new CopyOnWriteArrayList<>(); - final ThreadPoolManager s = ThreadPoolManager.getInstance(); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKETS_ARE_NOW_AVAILABLE_FOR_MONSTER_RACE_S1), 0, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.NOW_SELLING_TICKETS_FOR_MONSTER_RACE_S1), 30 * SECOND, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKETS_ARE_NOW_AVAILABLE_FOR_MONSTER_RACE_S1), MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.NOW_SELLING_TICKETS_FOR_MONSTER_RACE_S1), MINUTE + (30 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 2 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 3 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 4 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 5 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 6 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKETS_SALES_ARE_CLOSED_FOR_MONSTER_RACE_S1_ODDS_ARE_POSTED), 7 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S2_WILL_BEGIN_IN_S1_MINUTE_S), 7 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S2_WILL_BEGIN_IN_S1_MINUTE_S), 8 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S1_WILL_BEGIN_IN_30_SECONDS), (8 * MINUTE) + (30 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S1_IS_ABOUT_TO_BEGIN_COUNTDOWN_IN_FIVE_SECONDS), (8 * MINUTE) + (50 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (55 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (56 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (57 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (58 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (59 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.THEY_RE_OFF), 9 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKETS_ARE_NOW_AVAILABLE_FOR_MONSTER_RACE_S1), 0, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.NOW_SELLING_TICKETS_FOR_MONSTER_RACE_S1), 30 * SECOND, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKETS_ARE_NOW_AVAILABLE_FOR_MONSTER_RACE_S1), MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.NOW_SELLING_TICKETS_FOR_MONSTER_RACE_S1), MINUTE + (30 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 2 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 3 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 4 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 5 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 6 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKETS_SALES_ARE_CLOSED_FOR_MONSTER_RACE_S1_ODDS_ARE_POSTED), 7 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S2_WILL_BEGIN_IN_S1_MINUTE_S), 7 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S2_WILL_BEGIN_IN_S1_MINUTE_S), 8 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S1_WILL_BEGIN_IN_30_SECONDS), (8 * MINUTE) + (30 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S1_IS_ABOUT_TO_BEGIN_COUNTDOWN_IN_FIVE_SECONDS), (8 * MINUTE) + (50 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (55 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (56 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (57 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (58 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (59 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.THEY_RE_OFF), 9 * MINUTE, 10 * MINUTE); } _managers.add(this); } @@ -244,7 +243,7 @@ public class L2RaceManagerInstance extends L2Npc _packet = new MonRaceInfo(_codes[1][0], _codes[1][1], race.getMonsters(), race.getSpeeds()); sendMonsterInfo(); - ThreadPoolManager.getInstance().scheduleGeneral(new RunRace(), 5000); + ThreadPoolManager.schedule(new RunRace(), 5000); } else { @@ -549,7 +548,7 @@ public class L2RaceManagerInstance extends L2Npc { _packet = new MonRaceInfo(_codes[2][0], _codes[2][1], MonsterRace.getInstance().getMonsters(), MonsterRace.getInstance().getSpeeds()); sendMonsterInfo(); - ThreadPoolManager.getInstance().scheduleGeneral(new RunEnd(), 30000); + ThreadPoolManager.schedule(new RunEnd(), 30000); } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2RaidBossInstance.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2RaidBossInstance.java index 408df2d07e..b2a9629352 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2RaidBossInstance.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2RaidBossInstance.java @@ -72,7 +72,7 @@ public class L2RaidBossInstance extends L2MonsterInstance @Override protected void startMaintenanceTask() { - _maintenanceTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(() -> checkAndReturnToSpawn(), 60000, getMaintenanceInterval() + Rnd.get(5000)); + _maintenanceTask = ThreadPoolManager.scheduleAtFixedRate(() -> checkAndReturnToSpawn(), 60000, getMaintenanceInterval() + Rnd.get(5000)); } protected void checkAndReturnToSpawn() diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2ServitorInstance.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2ServitorInstance.java index 0a240610de..dc45e82daa 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2ServitorInstance.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2ServitorInstance.java @@ -85,7 +85,7 @@ public class L2ServitorInstance extends L2Summon implements Runnable super.onSpawn(); if ((_lifeTime > 0) && (_summonLifeTask == null)) { - _summonLifeTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this, 0, 5000); + _summonLifeTask = ThreadPoolManager.scheduleAtFixedRate(this, 0, 5000); } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2SiegeFlagInstance.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2SiegeFlagInstance.java index 36f948d921..eb169af1ce 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2SiegeFlagInstance.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2SiegeFlagInstance.java @@ -163,7 +163,7 @@ public class L2SiegeFlagInstance extends L2Npc // send warning to owners of headquarters that theirs base is under attack _clan.broadcastToOnlineMembers(SystemMessage.getSystemMessage(SystemMessageId.YOUR_BASE_IS_BEING_ATTACKED)); setCanTalk(false); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleTalkTask(), 20000); + ThreadPoolManager.schedule(new ScheduleTalkTask(), 20000); } } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2TamedBeastInstance.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2TamedBeastInstance.java index 6ef311e1a9..0a04416d20 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2TamedBeastInstance.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2TamedBeastInstance.java @@ -153,7 +153,7 @@ public final class L2TamedBeastInstance extends L2FeedableBeastInstance { _durationCheckTask.cancel(true); } - _durationCheckTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new CheckDuration(this), DURATION_CHECK_INTERVAL, DURATION_CHECK_INTERVAL); + _durationCheckTask = ThreadPoolManager.scheduleAtFixedRate(new CheckDuration(this), DURATION_CHECK_INTERVAL, DURATION_CHECK_INTERVAL); } } @@ -217,10 +217,10 @@ public final class L2TamedBeastInstance extends L2FeedableBeastInstance int delay = 100; for (Skill skill : _beastSkills) { - ThreadPoolManager.getInstance().scheduleGeneral(new buffCast(skill), delay); + ThreadPoolManager.schedule(new buffCast(skill), delay); delay += (100 + skill.getHitTime()); } - ThreadPoolManager.getInstance().scheduleGeneral(new buffCast(null), delay); + ThreadPoolManager.schedule(new buffCast(null), delay); } private class buffCast implements Runnable @@ -284,7 +284,7 @@ public final class L2TamedBeastInstance extends L2FeedableBeastInstance { _buffTask.cancel(true); } - _buffTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new CheckOwnerBuffs(this, totalBuffsAvailable), BUFF_INTERVAL, BUFF_INTERVAL); + _buffTask = ThreadPoolManager.scheduleAtFixedRate(new CheckOwnerBuffs(this, totalBuffsAvailable), BUFF_INTERVAL, BUFF_INTERVAL); } } else diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2TrapInstance.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2TrapInstance.java index c4ab166c6d..6ae55f616d 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2TrapInstance.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/instance/L2TrapInstance.java @@ -77,7 +77,7 @@ public final class L2TrapInstance extends L2Npc _remainingTime = _lifeTime; if (_skill != null) { - _trapTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new TrapTask(this), TICK, TICK); + _trapTask = ThreadPoolManager.scheduleAtFixedRate(new TrapTask(this), TICK, TICK); } } @@ -341,7 +341,7 @@ public final class L2TrapInstance extends L2Npc EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); - ThreadPoolManager.getInstance().scheduleGeneral(new TrapTriggerTask(this), 500); + ThreadPoolManager.schedule(new TrapTriggerTask(this), 500); } public void unSummon() diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/request/AbstractRequest.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/request/AbstractRequest.java index b7f9e2c67c..7950d61315 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/request/AbstractRequest.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/request/AbstractRequest.java @@ -55,7 +55,7 @@ public abstract class AbstractRequest public void scheduleTimeout(long delay) { - _timeOutTask = ThreadPoolManager.getInstance().scheduleGeneral(this::onTimeout, delay); + _timeOutTask = ThreadPoolManager.schedule(this::onTimeout, delay); } public boolean isTimeout() diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/status/CharStatus.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/status/CharStatus.java index 09073aa317..53571ee400 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/status/CharStatus.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/status/CharStatus.java @@ -216,7 +216,7 @@ public class CharStatus final int period = Formulas.getRegeneratePeriod(getActiveChar()); // Create the HP/MP/CP Regeneration task - _regTask = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new RegenTask(), period, period); + _regTask = ThreadPoolManager.scheduleAtFixedRate(new RegenTask(), period, period); } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/tasks/attackable/CommandChannelTimer.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/tasks/attackable/CommandChannelTimer.java index 87cc5f4937..6f37725f33 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/tasks/attackable/CommandChannelTimer.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/tasks/attackable/CommandChannelTimer.java @@ -48,7 +48,7 @@ public final class CommandChannelTimer implements Runnable } else { - ThreadPoolManager.getInstance().scheduleGeneral(this, 10000); // 10sec + ThreadPoolManager.schedule(this, 10000); // 10sec } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/tasks/npc/RandomAnimationTask.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/tasks/npc/RandomAnimationTask.java index 68c814f0a2..a6ffb508f1 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/tasks/npc/RandomAnimationTask.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/tasks/npc/RandomAnimationTask.java @@ -91,7 +91,7 @@ public class RandomAnimationTask implements Runnable final int interval = Rnd.get(minWait, maxWait) * 1000; // Create a RandomAnimation Task that will be launched after the calculated delay - ThreadPoolManager.getInstance().scheduleGeneral(this, interval); + ThreadPoolManager.schedule(this, interval); } /** diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/tasks/npc/trap/TrapTriggerTask.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/tasks/npc/trap/TrapTriggerTask.java index 6fa1c2f1dd..b15e938ffe 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/tasks/npc/trap/TrapTriggerTask.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/tasks/npc/trap/TrapTriggerTask.java @@ -38,7 +38,7 @@ public class TrapTriggerTask implements Runnable try { _trap.doCast(_trap.getSkill()); - ThreadPoolManager.getInstance().scheduleGeneral(new TrapUnsummonTask(_trap), _trap.getSkill().getHitTime() + 300); + ThreadPoolManager.schedule(new TrapUnsummonTask(_trap), _trap.getSkill().getHitTime() + 300); } catch (Exception e) { diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/tasks/player/FlyMoveStartTask.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/tasks/player/FlyMoveStartTask.java index 1f789e0c09..4dff07f0c4 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/tasks/player/FlyMoveStartTask.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/actor/tasks/player/FlyMoveStartTask.java @@ -51,7 +51,7 @@ public class FlyMoveStartTask implements Runnable if (!_player.hasRequest(SayuneRequest.class)) { _player.sendPacket(ExNotifyFlyMoveStart.STATIC_PACKET); - ThreadPoolManager.getInstance().scheduleGeneral(this, 1000L); + ThreadPoolManager.schedule(this, 1000L); } } } \ No newline at end of file diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/announce/AutoAnnouncement.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/announce/AutoAnnouncement.java index 931905492d..7d2ed5035b 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/announce/AutoAnnouncement.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/announce/AutoAnnouncement.java @@ -160,7 +160,7 @@ public final class AutoAnnouncement extends Announcement implements Runnable _task.cancel(false); } _currentState = _repeat; - _task = ThreadPoolManager.getInstance().scheduleGeneral(this, _initial); + _task = ThreadPoolManager.schedule(this, _initial); } @Override @@ -178,7 +178,7 @@ public final class AutoAnnouncement extends Announcement implements Runnable _currentState--; } - _task = ThreadPoolManager.getInstance().scheduleGeneral(this, _delay); + _task = ThreadPoolManager.schedule(this, _delay); } } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/buylist/Product.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/buylist/Product.java index e5f383ff32..10242424c7 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/buylist/Product.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/buylist/Product.java @@ -119,7 +119,7 @@ public final class Product } if ((_restockTask == null) || _restockTask.isDone()) { - _restockTask = ThreadPoolManager.getInstance().scheduleGeneral(this::restock, getRestockDelay()); + _restockTask = ThreadPoolManager.schedule(this::restock, getRestockDelay()); } final boolean result = _count.addAndGet(-val) >= 0; save(); @@ -136,7 +136,7 @@ public final class Product final long remainTime = nextRestockTime - System.currentTimeMillis(); if (remainTime > 0) { - _restockTask = ThreadPoolManager.getInstance().scheduleGeneral(this::restock, remainTime); + _restockTask = ThreadPoolManager.schedule(this::restock, remainTime); } else { diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/cubic/CubicInstance.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/cubic/CubicInstance.java index ada76382ec..c92709158b 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/cubic/CubicInstance.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/cubic/CubicInstance.java @@ -52,8 +52,8 @@ public class CubicInstance private void activate() { - _skillUseTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this::tryToUseSkill, 0, _template.getDelay() * 1000); - _expireTask = ThreadPoolManager.getInstance().scheduleAi(this::deactivate, _template.getDuration() * 1000); + _skillUseTask = ThreadPoolManager.scheduleAtFixedRate(this::tryToUseSkill, 0, _template.getDelay() * 1000); + _expireTask = ThreadPoolManager.schedule(this::deactivate, _template.getDuration() * 1000); } public void deactivate() diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/BlockCheckerEngine.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/BlockCheckerEngine.java index e58d229768..c161d20dac 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/BlockCheckerEngine.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/BlockCheckerEngine.java @@ -306,7 +306,7 @@ public final class BlockCheckerEngine _abnormalEnd = true; - ThreadPoolManager.getInstance().executeGeneral(new EndEvent()); + ThreadPoolManager.execute(new EndEvent()); if (Config.DEBUG) { @@ -429,7 +429,7 @@ public final class BlockCheckerEngine } _isStarted = true; // Spawn the blocks - ThreadPoolManager.getInstance().executeGeneral(new SpawnRound(16, 1)); + ThreadPoolManager.execute(new SpawnRound(16, 1)); // Start up player parameters setUpPlayers(); // Set the started time @@ -463,15 +463,15 @@ public final class BlockCheckerEngine { case 1: // Schedule second spawn round - _task = ThreadPoolManager.getInstance().scheduleGeneral(new SpawnRound(20, 2), 60000); + _task = ThreadPoolManager.schedule(new SpawnRound(20, 2), 60000); break; case 2: // Schedule third spawn round - _task = ThreadPoolManager.getInstance().scheduleGeneral(new SpawnRound(14, 3), 60000); + _task = ThreadPoolManager.schedule(new SpawnRound(14, 3), 60000); break; case 3: // Schedule Event End Count Down - _task = ThreadPoolManager.getInstance().scheduleGeneral(new EndEvent(), 180000); + _task = ThreadPoolManager.schedule(new EndEvent(), 180000); break; } // random % 2, if == 0 will spawn a red block @@ -530,7 +530,7 @@ public final class BlockCheckerEngine SpawnTable.getInstance().addNewSpawn(girlSpawn, false); girlSpawn.init(); // Schedule his deletion after 9 secs of spawn - ThreadPoolManager.getInstance().scheduleGeneral(new CarryingGirlUnspawn(girlSpawn), 9000); + ThreadPoolManager.schedule(new CarryingGirlUnspawn(girlSpawn), 9000); } catch (Exception e) { @@ -573,7 +573,7 @@ public final class BlockCheckerEngine /* * private class CountDown implements Runnable { - * @Override public void run() { _holder.broadCastPacketToTeam(SystemMessage.getSystemMessage(SystemMessageId.BLOCK_CHECKER_WILL_END_IN_5_SECONDS)); ThreadPoolManager.getInstance().scheduleGeneral(new EndEvent(), 5000); } } + * @Override public void run() { _holder.broadCastPacketToTeam(SystemMessage.getSystemMessage(SystemMessageId.BLOCK_CHECKER_WILL_END_IN_5_SECONDS)); ThreadPoolManager.schedule(new EndEvent(), 5000); } } */ /** diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/Castle.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/Castle.java index 2ef599c33b..b657df5013 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/Castle.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/Castle.java @@ -166,11 +166,11 @@ public final class Castle extends AbstractResidence final long currentTime = System.currentTimeMillis(); if (_endDate > currentTime) { - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(cwh), _endDate - currentTime); + ThreadPoolManager.schedule(new FunctionTask(cwh), _endDate - currentTime); } else { - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(cwh), 0); + ThreadPoolManager.schedule(new FunctionTask(cwh), 0); } } @@ -204,7 +204,7 @@ public final class Castle extends AbstractResidence { ClanTable.getInstance().getClan(getOwnerId()).getWarehouse().destroyItemByItemId("CS_function_fee", Inventory.ADENA_ID, fee, null, null); } - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(true), getRate()); + ThreadPoolManager.schedule(new FunctionTask(true), getRate()); } else { diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/ClanHall.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/ClanHall.java index e8b2e61692..2cfbef3323 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/ClanHall.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/ClanHall.java @@ -263,7 +263,7 @@ public final class ClanHall extends AbstractResidence final int failDays = getCostFailDay(); final long time = failDays > 0 ? (failDays > 8 ? Instant.now().toEpochMilli() : Instant.ofEpochMilli(getPaidUntil()).plus(Duration.ofDays(failDays + 1)).toEpochMilli()) : getPaidUntil(); - _checkPaymentTask = ThreadPoolManager.getInstance().scheduleGeneral(new CheckPaymentTask(), time - System.currentTimeMillis()); + _checkPaymentTask = ThreadPoolManager.schedule(new CheckPaymentTask(), time - System.currentTimeMillis()); } else { @@ -363,7 +363,7 @@ public final class ClanHall extends AbstractResidence } else { - _checkPaymentTask = ThreadPoolManager.getInstance().scheduleGeneral(new CheckPaymentTask(), 1, TimeUnit.DAYS); + _checkPaymentTask = ThreadPoolManager.schedule(new CheckPaymentTask(), 24 * 60 * 60 * 1000); // 1 day final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.PAYMENT_FOR_YOUR_CLAN_HALL_HAS_NOT_BEEN_MADE_PLEASE_MAKE_PAYMENT_TO_YOUR_CLAN_WAREHOUSE_BY_S1_TOMORROW); sm.addInt(getLease()); clan.broadcastToOnlineMembers(sm); @@ -373,7 +373,7 @@ public final class ClanHall extends AbstractResidence { clan.getWarehouse().destroyItem("Clan Hall Lease", Inventory.ADENA_ID, getLease(), null, null); setPaidUntil(Instant.ofEpochMilli(getPaidUntil()).plus(Duration.ofDays(7)).toEpochMilli()); - _checkPaymentTask = ThreadPoolManager.getInstance().scheduleGeneral(new CheckPaymentTask(), getPaidUntil() - System.currentTimeMillis()); + _checkPaymentTask = ThreadPoolManager.schedule(new CheckPaymentTask(), getPaidUntil() - System.currentTimeMillis()); updateDB(); } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/Duel.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/Duel.java index c8cfdbc0a1..6879c073af 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/Duel.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/Duel.java @@ -99,7 +99,7 @@ public class Duel broadcastToTeam2(sm); } // Schedule duel start - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartDuelTask(this), 3000); + ThreadPoolManager.schedule(new ScheduleStartDuelTask(this), 3000); } public static class PlayerCondition @@ -207,14 +207,14 @@ public class Duel } case Continue: { - ThreadPoolManager.getInstance().scheduleGeneral(this, 1000); + ThreadPoolManager.schedule(this, 1000); break; } default: { setFinished(true); playKneelAnimation(); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndDuelTask(_duel, _duel.checkEndDuelCondition()), 5000); + ThreadPoolManager.schedule(new ScheduleEndDuelTask(_duel, _duel.checkEndDuelCondition()), 5000); if (getDueldInstance() != null) { getDueldInstance().destroy(); @@ -255,11 +255,11 @@ public class Duel _duel.teleportPlayers(); // give players 20 seconds to complete teleport and get ready (its ought to be 30 on offical..) - ThreadPoolManager.getInstance().scheduleGeneral(this, 20000); + ThreadPoolManager.schedule(this, 20000); } else if (count > 0) // duel not started yet - continue countdown { - ThreadPoolManager.getInstance().scheduleGeneral(this, 1000); + ThreadPoolManager.schedule(this, 1000); } else { @@ -436,7 +436,7 @@ public class Duel broadcastToTeam2(B04_S01); // start duelling task - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleDuelTask(this), 1000); + ThreadPoolManager.schedule(new ScheduleDuelTask(this), 1000); } /** diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/Fort.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/Fort.java index 1aa9d4cc83..d892c13f8c 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/Fort.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/Fort.java @@ -166,11 +166,11 @@ public final class Fort extends AbstractResidence final long currentTime = System.currentTimeMillis(); if (_endDate > currentTime) { - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(cwh), _endDate - currentTime); + ThreadPoolManager.schedule(new FunctionTask(cwh), _endDate - currentTime); } else { - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(cwh), 0); + ThreadPoolManager.schedule(new FunctionTask(cwh), 0); } } @@ -204,7 +204,7 @@ public final class Fort extends AbstractResidence { getOwnerClan().getWarehouse().destroyItemByItemId("CS_function_fee", Inventory.ADENA_ID, fee, null, null); } - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(true), getRate()); + ThreadPoolManager.schedule(new FunctionTask(true), getRate()); } else { @@ -273,7 +273,7 @@ public final class Fort extends AbstractResidence public void endOfSiege(L2Clan clan) { - ThreadPoolManager.getInstance().executeAi(new endFortressSiege(this, clan)); + ThreadPoolManager.execute(new endFortressSiege(this, clan)); } /** @@ -594,15 +594,15 @@ public final class Fort extends AbstractResidence initial = (Config.FS_UPDATE_FRQ * 60000L) - initial; if ((Config.FS_MAX_OWN_TIME <= 0) || (getOwnedTime() < (Config.FS_MAX_OWN_TIME * 3600))) { - _FortUpdater[0] = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FortUpdater(this, clan, runCount, UpdaterType.PERIODIC_UPDATE), initial, Config.FS_UPDATE_FRQ * 60000L); // Schedule owner tasks to start running + _FortUpdater[0] = ThreadPoolManager.scheduleAtFixedRate(new FortUpdater(this, clan, runCount, UpdaterType.PERIODIC_UPDATE), initial, Config.FS_UPDATE_FRQ * 60000L); // Schedule owner tasks to start running if (Config.FS_MAX_OWN_TIME > 0) { - _FortUpdater[1] = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FortUpdater(this, clan, runCount, UpdaterType.MAX_OWN_TIME), 3600000, 3600000); // Schedule owner tasks to remove owener + _FortUpdater[1] = ThreadPoolManager.scheduleAtFixedRate(new FortUpdater(this, clan, runCount, UpdaterType.MAX_OWN_TIME), 3600000, 3600000); // Schedule owner tasks to remove owener } } else { - _FortUpdater[1] = ThreadPoolManager.getInstance().scheduleGeneral(new FortUpdater(this, clan, 0, UpdaterType.MAX_OWN_TIME), 60000); // Schedule owner tasks to remove owner + _FortUpdater[1] = ThreadPoolManager.schedule(new FortUpdater(this, clan, 0, UpdaterType.MAX_OWN_TIME), 60000); // Schedule owner tasks to remove owner } } else @@ -836,10 +836,10 @@ public final class Fort extends AbstractResidence { _FortUpdater[1].cancel(false); } - _FortUpdater[0] = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FortUpdater(this, clan, 0, UpdaterType.PERIODIC_UPDATE), Config.FS_UPDATE_FRQ * 60000L, Config.FS_UPDATE_FRQ * 60000L); // Schedule owner tasks to start running + _FortUpdater[0] = ThreadPoolManager.scheduleAtFixedRate(new FortUpdater(this, clan, 0, UpdaterType.PERIODIC_UPDATE), Config.FS_UPDATE_FRQ * 60000L, Config.FS_UPDATE_FRQ * 60000L); // Schedule owner tasks to start running if (Config.FS_MAX_OWN_TIME > 0) { - _FortUpdater[1] = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FortUpdater(this, clan, 0, UpdaterType.MAX_OWN_TIME), 3600000, 3600000); // Schedule owner tasks to remove owener + _FortUpdater[1] = ThreadPoolManager.scheduleAtFixedRate(new FortUpdater(this, clan, 0, UpdaterType.MAX_OWN_TIME), 3600000, 3600000); // Schedule owner tasks to remove owener } } else diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/FortSiege.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/FortSiege.java index c3c80f4589..840cacddb2 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/FortSiege.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/FortSiege.java @@ -111,7 +111,7 @@ public class FortSiege implements Siegable final SystemMessage sm; if (_time == 3600) // 1hr remains { - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(600), 3000000); // Prepare task for 10 minutes left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(600), 3000000); // Prepare task for 10 minutes left. } else if (_time == 600) // 10min remains { @@ -119,49 +119,49 @@ public class FortSiege implements Siegable sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(10); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(300), 300000); // Prepare task for 5 minutes left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(300), 300000); // Prepare task for 5 minutes left. } else if (_time == 300) // 5min remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(5); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(60), 240000); // Prepare task for 1 minute left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(60), 240000); // Prepare task for 1 minute left. } else if (_time == 60) // 1min remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(1); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(30), 30000); // Prepare task for 30 seconds left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(30), 30000); // Prepare task for 30 seconds left. } else if (_time == 30) // 30seconds remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_SECOND_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(30); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(10), 20000); // Prepare task for 10 seconds left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(10), 20000); // Prepare task for 10 seconds left. } else if (_time == 10) // 10seconds remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_SECOND_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(10); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(5), 5000); // Prepare task for 5 seconds left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(5), 5000); // Prepare task for 5 seconds left. } else if (_time == 5) // 5seconds remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_SECOND_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(5); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(1), 4000); // Prepare task for 1 seconds left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(1), 4000); // Prepare task for 1 seconds left. } else if (_time == 1) // 1seconds remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_SECOND_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(1); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(0), 1000); // Prepare task start siege. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(0), 1000); // Prepare task start siege. } else if (_time == 0)// start siege { @@ -274,7 +274,7 @@ public class FortSiege implements Siegable unspawnSiegeGuard(); // Remove all spawned siege guard from this fort getFort().resetDoors(); // Respawn door to fort - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleSuspiciousMerchantSpawn(), FortSiegeManager.getInstance().getSuspiciousMerchantRespawnDelay() * 60 * 1000L); // Prepare 3hr task for suspicious merchant respawn + ThreadPoolManager.schedule(new ScheduleSuspiciousMerchantSpawn(), FortSiegeManager.getInstance().getSuspiciousMerchantRespawnDelay() * 60 * 1000L); // Prepare 3hr task for suspicious merchant respawn setSiegeDateTime(true); // store suspicious merchant spawn in DB if (_siegeEnd != null) @@ -336,7 +336,7 @@ public class FortSiege implements Siegable getFort().getZone().updateZoneStatusForCharactersInside(); // Schedule a task to prepare auto siege end - _siegeEnd = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(), FortSiegeManager.getInstance().getSiegeLength() * 60 * 1000L); // Prepare auto end task + _siegeEnd = ThreadPoolManager.schedule(new ScheduleEndSiegeTask(), FortSiegeManager.getInstance().getSiegeLength() * 60 * 1000L); // Prepare auto end task final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THE_FORTRESS_BATTLE_S1_HAS_BEGUN); sm.addCastleId(getFort().getResidenceId()); @@ -672,7 +672,7 @@ public class FortSiege implements Siegable else if (_siegeRestore == null) { getFort().getSiege().announceToPlayer(SystemMessage.getSystemMessage(SystemMessageId.THE_BARRACKS_HAVE_BEEN_SEIZED)); - _siegeRestore = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleSiegeRestore(), FortSiegeManager.getInstance().getCountDownLength() * 60 * 1000L); + _siegeRestore = ThreadPoolManager.schedule(new ScheduleSiegeRestore(), FortSiegeManager.getInstance().getCountDownLength() * 60 * 1000L); } else { @@ -830,7 +830,7 @@ public class FortSiege implements Siegable saveFortSiege(); clearSiegeClan(); // remove all clans // spawn suspicious merchant immediately - ThreadPoolManager.getInstance().executeGeneral(new ScheduleSuspiciousMerchantSpawn()); + ThreadPoolManager.execute(new ScheduleSuspiciousMerchantSpawn()); } else { @@ -838,33 +838,33 @@ public class FortSiege implements Siegable if (getAttackerClans().isEmpty()) { // no attackers - waiting for suspicious merchant spawn - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleSuspiciousMerchantSpawn(), delay); + ThreadPoolManager.schedule(new ScheduleSuspiciousMerchantSpawn(), delay); } else { // preparing start siege task if (delay > 3600000) // more than hour, how this can happens ? spawn suspicious merchant { - ThreadPoolManager.getInstance().executeGeneral(new ScheduleSuspiciousMerchantSpawn()); - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(3600), delay - 3600000); + ThreadPoolManager.execute(new ScheduleSuspiciousMerchantSpawn()); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(3600), delay - 3600000); } if (delay > 600000) // more than 10 min, spawn suspicious merchant { - ThreadPoolManager.getInstance().executeGeneral(new ScheduleSuspiciousMerchantSpawn()); - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(600), delay - 600000); + ThreadPoolManager.execute(new ScheduleSuspiciousMerchantSpawn()); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(600), delay - 600000); } else if (delay > 300000) { - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(300), delay - 300000); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(300), delay - 300000); } else if (delay > 60000) { - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(60), delay - 60000); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(60), delay - 60000); } else { // lower than 1 min, set to 1 min - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(60), 0); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(60), 0); } _log.info(getClass().getSimpleName() + ": Siege of " + getFort().getName() + " fort: " + getFort().getSiegeDate().getTime()); @@ -894,7 +894,7 @@ public class FortSiege implements Siegable } // Execute siege auto start - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(3600), 0); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(3600), 0); } /** diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/Siege.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/Siege.java index a9ead559aa..4d1d933e3a 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/Siege.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/entity/Siege.java @@ -103,35 +103,35 @@ public class Siege implements Siegable final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_HOUR_S_UNTIL_CASTLE_SIEGE_CONCLUSION); sm.addInt(2); announceToPlayer(sm, true); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 3600000); // Prepare task for 1 hr left. + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 3600000); // Prepare task for 1 hr left. } else if ((timeRemaining <= 3600000) && (timeRemaining > 600000)) { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_CASTLE_SIEGE_CONCLUSION); sm.addInt((int) timeRemaining / 60000); announceToPlayer(sm, true); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 600000); // Prepare task for 10 minute left. + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 600000); // Prepare task for 10 minute left. } else if ((timeRemaining <= 600000) && (timeRemaining > 300000)) { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_CASTLE_SIEGE_CONCLUSION); sm.addInt((int) timeRemaining / 60000); announceToPlayer(sm, true); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 300000); // Prepare task for 5 minute left. + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 300000); // Prepare task for 5 minute left. } else if ((timeRemaining <= 300000) && (timeRemaining > 10000)) { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_CASTLE_SIEGE_CONCLUSION); sm.addInt((int) timeRemaining / 60000); announceToPlayer(sm, true); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 10000); // Prepare task for 10 seconds count down + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 10000); // Prepare task for 10 seconds count down } else if ((timeRemaining <= 10000) && (timeRemaining > 0)) { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THIS_CASTLE_SIEGE_WILL_END_IN_S1_SECOND_S); sm.addInt((int) timeRemaining / 1000); announceToPlayer(sm, true); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(_castleInst), timeRemaining); // Prepare task for second count down + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(_castleInst), timeRemaining); // Prepare task for second count down } else { @@ -170,7 +170,7 @@ public class Siege implements Siegable final long regTimeRemaining = getTimeRegistrationOverDate().getTimeInMillis() - Calendar.getInstance().getTimeInMillis(); if (regTimeRemaining > 0) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), regTimeRemaining); + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), regTimeRemaining); return; } endTimeRegistration(true); @@ -179,7 +179,7 @@ public class Siege implements Siegable final long timeRemaining = getSiegeDate().getTimeInMillis() - Calendar.getInstance().getTimeInMillis(); if (timeRemaining > 86400000) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 86400000); // Prepare task for 24 before siege start to end registration + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 86400000); // Prepare task for 24 before siege start to end registration } else if ((timeRemaining <= 86400000) && (timeRemaining > 13600000)) { @@ -188,23 +188,23 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(sm); _isRegistrationOver = true; clearSiegeWaitingClan(); - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 13600000); // Prepare task for 1 hr left before siege start. + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 13600000); // Prepare task for 1 hr left before siege start. } else if ((timeRemaining <= 13600000) && (timeRemaining > 600000)) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 600000); // Prepare task for 10 minute left. + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 600000); // Prepare task for 10 minute left. } else if ((timeRemaining <= 600000) && (timeRemaining > 300000)) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 300000); // Prepare task for 5 minute left. + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 300000); // Prepare task for 5 minute left. } else if ((timeRemaining <= 300000) && (timeRemaining > 10000)) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 10000); // Prepare task for 10 seconds count down + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 10000); // Prepare task for 10 seconds count down } else if ((timeRemaining <= 10000) && (timeRemaining > 0)) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining); // Prepare task for second count down + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining); // Prepare task for second count down } else { @@ -523,7 +523,7 @@ public class Siege implements Siegable // Schedule a task to prepare auto siege end _siegeEndDate = Calendar.getInstance(); _siegeEndDate.add(Calendar.MINUTE, SiegeManager.getInstance().getSiegeLength()); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(getCastle()), 1000); // Prepare auto end task + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(getCastle()), 1000); // Prepare auto end task final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THE_S1_SIEGE_HAS_STARTED); sm.addCastleId(getCastle().getResidenceId()); @@ -1095,7 +1095,7 @@ public class Siege implements Siegable { _scheduledStartSiegeTask.cancel(false); } - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new Siege.ScheduleStartSiegeTask(getCastle()), 1000); + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new Siege.ScheduleStartSiegeTask(getCastle()), 1000); } /** @@ -1413,7 +1413,7 @@ public class Siege implements Siegable if (_scheduledStartSiegeTask != null) { _scheduledStartSiegeTask.cancel(true); - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new Siege.ScheduleStartSiegeTask(getCastle()), 1000); + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new Siege.ScheduleStartSiegeTask(getCastle()), 1000); } try (Connection con = DatabaseFactory.getInstance().getConnection(); diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/eventengine/EventScheduler.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/eventengine/EventScheduler.java index fdc58c3301..8f25107013 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/eventengine/EventScheduler.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/eventengine/EventScheduler.java @@ -115,7 +115,7 @@ public class EventScheduler if (timeSchedule <= (30 * 1000)) { LOGGER.warning("Wrong reschedule for " + _eventManager.getClass().getSimpleName() + " end up run in " + (timeSchedule / 1000) + " seconds!"); - ThreadPoolManager.getInstance().scheduleEvent(this::startScheduler, timeSchedule + 1000); + ThreadPoolManager.schedule(this::startScheduler, timeSchedule + 1000); return; } @@ -124,14 +124,14 @@ public class EventScheduler _task.cancel(false); } - _task = ThreadPoolManager.getInstance().scheduleEvent(() -> + _task = ThreadPoolManager.schedule(() -> { run(); updateLastRun(); if (isRepeating()) { - ThreadPoolManager.getInstance().scheduleEvent(this::startScheduler, 1000); + ThreadPoolManager.schedule(this::startScheduler, 1000); } }, timeSchedule); } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/events/EventDispatcher.java index c7251bbe59..2e551991b6 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -17,7 +17,6 @@ package com.l2jmobius.gameserver.model.events; import java.util.Queue; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -116,7 +115,7 @@ public final class EventDispatcher if (hasListeners) { - ThreadPoolManager.getInstance().executeEvent(() -> notifyEventToMultipleContainers(event, containers, null)); + ThreadPoolManager.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } } @@ -130,22 +129,7 @@ public final class EventDispatcher { if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) { - ThreadPoolManager.getInstance().scheduleEvent(() -> notifyEvent(event, container, null), delay); - } - } - - /** - * Scheduling current listener notification asynchronously after specified delay. - * @param event - * @param container - * @param delay - * @param unit - */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay, TimeUnit unit) - { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) - { - ThreadPoolManager.getInstance().scheduleEvent(() -> notifyEvent(event, container, null), delay, unit); + ThreadPoolManager.schedule(() -> notifyEvent(event, container, null), delay); } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/events/timers/TimerHolder.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/events/timers/TimerHolder.java index 1a0961ed28..98bce44327 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/events/timers/TimerHolder.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/events/timers/TimerHolder.java @@ -58,7 +58,7 @@ public class TimerHolder implements Runnable _eventScript = eventScript; _cancelScript = cancelScript; _postExecutor = postExecutor; - _task = isRepeating ? ThreadPoolManager.getInstance().scheduleEventAtFixedRate(this, _time, _time) : ThreadPoolManager.getInstance().scheduleEvent(this, _time); + _task = isRepeating ? ThreadPoolManager.scheduleAtFixedRate(this, _time, _time) : ThreadPoolManager.schedule(this, _time); TimersManager.getInstance().registerTimer(this); } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/instancezone/Instance.java index c55257fc29..232944b028 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/instancezone/Instance.java @@ -290,7 +290,7 @@ public final class Instance implements IIdentifiable, INamable } else if ((emptyTime >= 0) && (_emptyDestroyTask == null) && (getRemainingTime() < emptyTime)) { - _emptyDestroyTask = ThreadPoolManager.getInstance().scheduleGeneral(this::destroy, emptyTime); + _emptyDestroyTask = ThreadPoolManager.schedule(this::destroy, emptyTime); } } } @@ -684,11 +684,11 @@ public final class Instance implements IIdentifiable, INamable sendWorldDestroyMessage(minutes); if (minutes <= 5) // Message 1 minute before destroy { - _cleanUpTask = ThreadPoolManager.getInstance().scheduleGeneral(this::cleanUp, millis - 60000); + _cleanUpTask = ThreadPoolManager.schedule(this::cleanUp, millis - 60000); } else // Message 5 minutes before destroy { - _cleanUpTask = ThreadPoolManager.getInstance().scheduleGeneral(this::cleanUp, millis - (5 * 60000)); + _cleanUpTask = ThreadPoolManager.schedule(this::cleanUp, millis - (5 * 60000)); } } } @@ -900,13 +900,13 @@ public final class Instance implements IIdentifiable, INamable player.sendPacket(sm); // Start eject task - _ejectDeadTasks.put(player.getObjectId(), ThreadPoolManager.getInstance().scheduleGeneral(() -> + _ejectDeadTasks.put(player.getObjectId(), ThreadPoolManager.schedule(() -> { if (player.isDead()) { ejectPlayer(player.getActingPlayer()); } - }, _template.getEjectTime(), TimeUnit.MINUTES)); + }, _template.getEjectTime() * 60 * 1000)); // minutes to milliseconds } /** @@ -1128,12 +1128,12 @@ public final class Instance implements IIdentifiable, INamable if (getRemainingTime() <= TimeUnit.MINUTES.toMillis(1)) { sendWorldDestroyMessage(1); - _cleanUpTask = ThreadPoolManager.getInstance().scheduleGeneral(this::destroy, 1, TimeUnit.MINUTES); + _cleanUpTask = ThreadPoolManager.schedule(this::destroy, 60 * 1000); // 1 minute } else { sendWorldDestroyMessage(5); - _cleanUpTask = ThreadPoolManager.getInstance().scheduleGeneral(this::cleanUp, 5, TimeUnit.MINUTES); + _cleanUpTask = ThreadPoolManager.schedule(this::cleanUp, 5 * 60 * 1000); // 5 minutes } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/itemauction/ItemAuction.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/itemauction/ItemAuction.java index caee88ddf3..aaab55dec7 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/itemauction/ItemAuction.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/itemauction/ItemAuction.java @@ -400,7 +400,7 @@ public final class ItemAuction public final void broadcastToAllBidders(IClientOutgoingPacket packet) { - ThreadPoolManager.getInstance().executeGeneral(() -> broadcastToAllBiddersInternal(packet)); + ThreadPoolManager.execute(() -> broadcastToAllBiddersInternal(packet)); } public final void broadcastToAllBiddersInternal(IClientOutgoingPacket packet) diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/itemauction/ItemAuctionInstance.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/itemauction/ItemAuctionInstance.java index 6b216c3ba4..544091dcd5 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/itemauction/ItemAuctionInstance.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/itemauction/ItemAuctionInstance.java @@ -331,17 +331,17 @@ public final class ItemAuctionInstance { if (currentAuction.getAuctionState() == ItemAuctionState.STARTED) { - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleAuctionTask(currentAuction), Math.max(currentAuction.getEndingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(new ScheduleAuctionTask(currentAuction), Math.max(currentAuction.getEndingTime() - System.currentTimeMillis(), 0L))); } else { - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleAuctionTask(currentAuction), Math.max(currentAuction.getStartingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(new ScheduleAuctionTask(currentAuction), Math.max(currentAuction.getStartingTime() - System.currentTimeMillis(), 0L))); } LOGGER.info(getClass().getSimpleName() + ": Schedule current auction " + currentAuction.getAuctionId() + " for instance " + _instanceId); } else { - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleAuctionTask(nextAuction), Math.max(nextAuction.getStartingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(new ScheduleAuctionTask(nextAuction), Math.max(nextAuction.getStartingTime() - System.currentTimeMillis(), 0L))); LOGGER.info(getClass().getSimpleName() + ": Schedule next auction " + nextAuction.getAuctionId() + " on " + DATE_FORMAT.format(new Date(nextAuction.getStartingTime())) + " for instance " + _instanceId); } } @@ -429,7 +429,7 @@ public final class ItemAuctionInstance if (_auction.getScheduledAuctionEndingExtendState() == ItemAuctionExtendState.INITIAL) { _auction.setScheduledAuctionEndingExtendState(ItemAuctionExtendState.EXTEND_BY_5_MIN); - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); return; } break; @@ -440,7 +440,7 @@ public final class ItemAuctionInstance if (_auction.getScheduledAuctionEndingExtendState() != ItemAuctionExtendState.EXTEND_BY_3_MIN) { _auction.setScheduledAuctionEndingExtendState(ItemAuctionExtendState.EXTEND_BY_3_MIN); - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); return; } break; @@ -451,7 +451,7 @@ public final class ItemAuctionInstance if (_auction.getScheduledAuctionEndingExtendState() != ItemAuctionExtendState.EXTEND_BY_CONFIG_PHASE_B) { _auction.setScheduledAuctionEndingExtendState(ItemAuctionExtendState.EXTEND_BY_CONFIG_PHASE_B); - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); return; } break; @@ -462,7 +462,7 @@ public final class ItemAuctionInstance if (_auction.getScheduledAuctionEndingExtendState() != ItemAuctionExtendState.EXTEND_BY_CONFIG_PHASE_A) { _auction.setScheduledAuctionEndingExtendState(ItemAuctionExtendState.EXTEND_BY_CONFIG_PHASE_A); - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); return; } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/items/instance/L2ItemInstance.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/items/instance/L2ItemInstance.java index b8f458239e..af1054767c 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/items/instance/L2ItemInstance.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/items/instance/L2ItemInstance.java @@ -1412,7 +1412,7 @@ public final class L2ItemInstance extends L2Object return; } _consumingMana = true; - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleConsumeManaTask(this), MANA_CONSUMPTION_RATE); + ThreadPoolManager.schedule(new ScheduleConsumeManaTask(this), MANA_CONSUMPTION_RATE); } /** @@ -1545,7 +1545,7 @@ public final class L2ItemInstance extends L2Object public final void dropMe(L2Character dropper, int x, int y, int z) { - ThreadPoolManager.getInstance().executeGeneral(new ItemDropTask(this, dropper, x, y, z)); + ThreadPoolManager.execute(new ItemDropTask(this, dropper, x, y, z)); if ((dropper != null) && dropper.isPlayer()) { // Notify to scripts @@ -1833,7 +1833,7 @@ public final class L2ItemInstance extends L2Object { _lifeTimeTask.cancel(true); } - _lifeTimeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleLifeTimeTask(this), getRemainingTime()); + _lifeTimeTask = ThreadPoolManager.schedule(new ScheduleLifeTimeTask(this), getRemainingTime()); } } @@ -2379,11 +2379,11 @@ public final class L2ItemInstance extends L2Object final long time = getVisualLifeTime() - System.currentTimeMillis(); if (time > 0) { - _appearanceLifeTimeTask = ThreadPoolManager.getInstance().scheduleGeneral(this::onVisualLifeTimeEnd, time); + _appearanceLifeTimeTask = ThreadPoolManager.schedule(this::onVisualLifeTimeEnd, time); } else { - ThreadPoolManager.getInstance().executeGeneral(this::onVisualLifeTimeEnd); + ThreadPoolManager.execute(this::onVisualLifeTimeEnd); } } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/olympiad/Olympiad.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/olympiad/Olympiad.java index b7f07cadea..edbb47633b 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/olympiad/Olympiad.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/olympiad/Olympiad.java @@ -200,7 +200,7 @@ public class Olympiad extends ListenersContainer if (_validationEnd > Calendar.getInstance().getTimeInMillis()) { loadNoblesRank(); - _scheduledValdationTask = ThreadPoolManager.getInstance().scheduleGeneral(new ValidationEndTask(), getMillisToValidationEnd()); + _scheduledValdationTask = ThreadPoolManager.schedule(new ValidationEndTask(), getMillisToValidationEnd()); } else { @@ -357,7 +357,7 @@ public class Olympiad extends ListenersContainer _scheduledOlympiadEnd.cancel(true); } - _scheduledOlympiadEnd = ThreadPoolManager.getInstance().scheduleGeneral(new OlympiadEndTask(), getMillisToOlympiadEnd()); + _scheduledOlympiadEnd = ThreadPoolManager.schedule(new OlympiadEndTask(), getMillisToOlympiadEnd()); updateCompStatus(); } @@ -391,7 +391,7 @@ public class Olympiad extends ListenersContainer _validationEnd = validationEnd.getTimeInMillis() + VALIDATION_PERIOD; loadNoblesRank(); - _scheduledValdationTask = ThreadPoolManager.getInstance().scheduleGeneral(new ValidationEndTask(), getMillisToValidationEnd()); + _scheduledValdationTask = ThreadPoolManager.schedule(new ValidationEndTask(), getMillisToValidationEnd()); } } @@ -439,7 +439,7 @@ public class Olympiad extends ListenersContainer LOGGER.info(getClass().getSimpleName() + ": Event starts/started: " + _compStart.getTime()); } - _scheduledCompStart = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _scheduledCompStart = ThreadPoolManager.schedule(() -> { if (isOlympiadEnd()) { @@ -452,19 +452,19 @@ public class Olympiad extends ListenersContainer LOGGER.info(getClass().getSimpleName() + ": Olympiad Games have started."); _logResults.info("Result,Player1,Player2,Player1 HP,Player2 HP,Player1 Damage,Player2 Damage,Points,Classed"); - _gameManager = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(OlympiadGameManager.getInstance(), 30000, 30000); + _gameManager = ThreadPoolManager.scheduleAtFixedRate(OlympiadGameManager.getInstance(), 30000, 30000); if (Config.ALT_OLY_ANNOUNCE_GAMES) { - _gameAnnouncer = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new OlympiadAnnouncer(), 30000, 500); + _gameAnnouncer = ThreadPoolManager.scheduleAtFixedRate(new OlympiadAnnouncer(), 30000, 500); } final long regEnd = getMillisToCompEnd() - 600000; if (regEnd > 0) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> Broadcast.toAllOnlinePlayers(SystemMessage.getSystemMessage(SystemMessageId.THE_OLYMPIAD_REGISTRATION_PERIOD_HAS_ENDED)), regEnd); + ThreadPoolManager.schedule(() -> Broadcast.toAllOnlinePlayers(SystemMessage.getSystemMessage(SystemMessageId.THE_OLYMPIAD_REGISTRATION_PERIOD_HAS_ENDED)), regEnd); } - _scheduledCompEnd = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _scheduledCompEnd = ThreadPoolManager.schedule(() -> { if (isOlympiadEnd()) { @@ -519,7 +519,7 @@ public class Olympiad extends ListenersContainer _scheduledOlympiadEnd.cancel(true); } - _scheduledOlympiadEnd = ThreadPoolManager.getInstance().scheduleGeneral(new OlympiadEndTask(), 0); + _scheduledOlympiadEnd = ThreadPoolManager.schedule(new OlympiadEndTask(), 0); } protected long getMillisToValidationEnd() @@ -608,7 +608,7 @@ public class Olympiad extends ListenersContainer private void scheduleWeeklyChange() { - _scheduledWeeklyTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(() -> + _scheduledWeeklyTask = ThreadPoolManager.scheduleAtFixedRate(() -> { addWeeklyPoints(); LOGGER.info(getClass().getSimpleName() + ": Added weekly points to nobles"); diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java index d73f155193..f2425871a3 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java @@ -170,7 +170,7 @@ public final class OlympiadGameTask implements Runnable _game = game; _state = GameState.BEGIN; _needAnnounce = false; - ThreadPoolManager.getInstance().executeGeneral(this); + ThreadPoolManager.execute(this); } @Override @@ -341,7 +341,7 @@ public final class OlympiadGameTask implements Runnable return; } } - ThreadPoolManager.getInstance().scheduleGeneral(this, delay * 1000); + ThreadPoolManager.schedule(this, delay * 1000); } catch (Exception e) { @@ -361,7 +361,7 @@ public final class OlympiadGameTask implements Runnable _log.log(Level.WARNING, "Exception in " + _state + ", trying to port players back: " + e.getMessage(), e); _state = GameState.GAME_STOPPED; - ThreadPoolManager.getInstance().scheduleGeneral(this, 1000); + ThreadPoolManager.schedule(this, 1000); } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/punishment/PunishmentTask.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/punishment/PunishmentTask.java index 013c69f09a..bc8f5d0bc3 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/punishment/PunishmentTask.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/punishment/PunishmentTask.java @@ -147,7 +147,7 @@ public class PunishmentTask implements Runnable onStart(); if (_expirationTime > 0) // Has expiration? { - _task = ThreadPoolManager.getInstance().scheduleGeneral(this, (_expirationTime - System.currentTimeMillis())); + _task = ThreadPoolManager.schedule(this, (_expirationTime - System.currentTimeMillis())); } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/quest/LongTimeEvent.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/quest/LongTimeEvent.java index 0f19e40b4e..d197a06b7b 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/quest/LongTimeEvent.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/quest/LongTimeEvent.java @@ -91,7 +91,7 @@ public class LongTimeEvent extends Quest else if (_eventPeriod.getStartDate().after(new Date())) { final long delay = _eventPeriod.getStartDate().getTime() - System.currentTimeMillis(); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStart(), delay); + ThreadPoolManager.schedule(new ScheduleStart(), delay); _log.info("Event " + _eventName + " will be started at " + _eventPeriod.getEndDate()); } else @@ -301,7 +301,7 @@ public class LongTimeEvent extends Quest AnnouncementsTable.getInstance().addAnnouncement(new EventAnnouncement(_eventPeriod, _onEnterMsg)); // Schedule event end (now only for message sending) - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEnd(), millisToEventEnd); + ThreadPoolManager.schedule(new ScheduleEnd(), millisToEventEnd); } /** diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/quest/QuestTimer.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/quest/QuestTimer.java index b468ad4c99..0eb81e0589 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/quest/QuestTimer.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/quest/QuestTimer.java @@ -68,7 +68,7 @@ public class QuestTimer _player = player; _npc = npc; _isRepeating = repeating; - _schedular = repeating ? ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new ScheduleTimerTask(), time, time) : ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleTimerTask(), time); + _schedular = repeating ? ThreadPoolManager.scheduleAtFixedRate(new ScheduleTimerTask(), time, time) : ThreadPoolManager.schedule(new ScheduleTimerTask(), time); } public QuestTimer(Quest quest, String name, long time, L2Npc npc, L2PcInstance player) diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/residences/ResidenceFunction.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/residences/ResidenceFunction.java index 6ebf0aba8e..9b93abc89c 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/residences/ResidenceFunction.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/residences/ResidenceFunction.java @@ -65,7 +65,7 @@ public class ResidenceFunction final ResidenceFunctionTemplate template = getTemplate(); if ((template != null) && (_expiration > System.currentTimeMillis())) { - _task = ThreadPoolManager.getInstance().scheduleGeneral(this::onFunctionExpiration, _expiration - System.currentTimeMillis()); + _task = ThreadPoolManager.schedule(this::onFunctionExpiration, _expiration - System.currentTimeMillis()); } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/shuttle/L2ShuttleEngine.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/shuttle/L2ShuttleEngine.java index 251b61c206..6fb07987fe 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/shuttle/L2ShuttleEngine.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/shuttle/L2ShuttleEngine.java @@ -64,7 +64,7 @@ public class L2ShuttleEngine implements Runnable _shuttle.openDoor(0); _shuttle.closeDoor(1); _shuttle.broadcastShuttleInfo(); - ThreadPoolManager.getInstance().scheduleGeneral(this, DELAY); + ThreadPoolManager.schedule(this, DELAY); break; } case 1: @@ -74,7 +74,7 @@ public class L2ShuttleEngine implements Runnable _shuttle.closeDoor(0); _shuttle.closeDoor(1); _shuttle.broadcastShuttleInfo(); - ThreadPoolManager.getInstance().scheduleGeneral(this, 1000); + ThreadPoolManager.schedule(this, 1000); break; } case 2: @@ -89,7 +89,7 @@ public class L2ShuttleEngine implements Runnable _shuttle.openDoor(1); _shuttle.closeDoor(0); _shuttle.broadcastShuttleInfo(); - ThreadPoolManager.getInstance().scheduleGeneral(this, DELAY); + ThreadPoolManager.schedule(this, DELAY); break; } case 4: @@ -99,7 +99,7 @@ public class L2ShuttleEngine implements Runnable _shuttle.closeDoor(0); _shuttle.closeDoor(1); _shuttle.broadcastShuttleInfo(); - ThreadPoolManager.getInstance().scheduleGeneral(this, 1000); + ThreadPoolManager.schedule(this, 1000); break; } case 5: diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/skills/BuffInfo.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/skills/BuffInfo.java index f77eb25b5c..83cb08e95d 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/skills/BuffInfo.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/skills/BuffInfo.java @@ -291,7 +291,7 @@ public final class BuffInfo // Creates a task that will stop all the effects. if (_abnormalTime > 0) { - _scheduledFutureTimeTask = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new BuffTimeTask(this), 0, 1000L); + _scheduledFutureTimeTask = ThreadPoolManager.scheduleAtFixedRate(new BuffTimeTask(this), 0, 1000L); } // Reset abnormal visual effects. @@ -313,7 +313,7 @@ public final class BuffInfo { // The task for the effect ticks. final EffectTickTask effectTask = new EffectTickTask(this, effect); - final ScheduledFuture scheduledFuture = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(effectTask, effect.getTicks() * Config.EFFECT_TICK_RATIO, effect.getTicks() * Config.EFFECT_TICK_RATIO); + final ScheduledFuture scheduledFuture = ThreadPoolManager.scheduleAtFixedRate(effectTask, effect.getTicks() * Config.EFFECT_TICK_RATIO, effect.getTicks() * Config.EFFECT_TICK_RATIO); // Adds the task for ticking. addTask(effect, new EffectTaskInfo(effectTask, scheduledFuture)); } @@ -448,7 +448,7 @@ public final class BuffInfo { _scheduledFutureTimeTask.cancel(true); } - _scheduledFutureTimeTask = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new BuffTimeTask(this), 0, 1000L); + _scheduledFutureTimeTask = ThreadPoolManager.scheduleAtFixedRate(new BuffTimeTask(this), 0, 1000L); } } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java index ec30530b46..9780892efe 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -211,7 +211,7 @@ public class SkillCaster implements Runnable // Reschedule next task if we have such. if (hasNextPhase) { - _task = ThreadPoolManager.getInstance().scheduleEffect(this, nextTaskDelay); + _task = ThreadPoolManager.schedule(this, nextTaskDelay); } else { @@ -650,7 +650,7 @@ public class SkillCaster implements Runnable if (queuedSkill != null) { - ThreadPoolManager.getInstance().executeGeneral(() -> + ThreadPoolManager.execute(() -> { currPlayer.setQueuedSkill(null, null, false, false); currPlayer.useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/skills/SkillChannelizer.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/skills/SkillChannelizer.java index 47cf19adfa..3875eb6830 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/skills/SkillChannelizer.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/skills/SkillChannelizer.java @@ -78,7 +78,7 @@ public class SkillChannelizer implements Runnable // Start channeling. _skill = skill; - _task = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this, skill.getChannelingTickInitialDelay(), skill.getChannelingTickInterval()); + _task = ThreadPoolManager.scheduleAtFixedRate(this, skill.getChannelingTickInitialDelay(), skill.getChannelingTickInterval()); } public void stopChanneling() diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/votereward/VoteSystem.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/votereward/VoteSystem.java index ee96ba2285..dd4d99799e 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/votereward/VoteSystem.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/votereward/VoteSystem.java @@ -108,7 +108,7 @@ public abstract class VoteSystem implements Runnable this.rewards = rewards; this.checkMins = checkMins; - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this, checkMins * 1000 * 60, checkMins * 1000 * 60); + ThreadPoolManager.scheduleAtFixedRate(this, checkMins * 1000 * 60, checkMins * 1000 * 60); } protected void reward() diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2DamageZone.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2DamageZone.java index 4ba930be33..ab4c97288c 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2DamageZone.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2DamageZone.java @@ -121,7 +121,7 @@ public class L2DamageZone extends L2ZoneType { if (getSettings().getTask() == null) { - getSettings().setTask(ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new ApplyDamage(this), _startTask, _reuseTask)); + getSettings().setTask(ThreadPoolManager.scheduleAtFixedRate(new ApplyDamage(this), _startTask, _reuseTask)); } } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2EffectZone.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2EffectZone.java index 8faad5e583..53947b8169 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2EffectZone.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2EffectZone.java @@ -136,7 +136,7 @@ public final class L2EffectZone extends L2ZoneType { if (getSettings().getTask() == null) { - getSettings().setTask(ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new ApplySkill(), _initialDelay, _reuse)); + getSettings().setTask(ThreadPoolManager.scheduleAtFixedRate(new ApplySkill(), _initialDelay, _reuse)); } } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2FishingZone.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2FishingZone.java index d95e135c58..6814af7a3a 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2FishingZone.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2FishingZone.java @@ -47,7 +47,7 @@ public class L2FishingZone extends L2ZoneType if ((Config.ALLOW_FISHING || character.canOverrideCond(PcCondOverride.ZONE_CONDITIONS)) && !character.isInsideZone(ZoneId.FISHING)) { final WeakReference weakPlayer = new WeakReference<>(character.getActingPlayer()); - ThreadPoolManager.getInstance().executeGeneral(new Runnable() + ThreadPoolManager.execute(new Runnable() { @Override public void run() @@ -69,7 +69,7 @@ public class L2FishingZone extends L2ZoneType player.sendPacket(ExAutoFishAvailable.NO); } } - ThreadPoolManager.getInstance().scheduleGeneral(this, 1500); + ThreadPoolManager.schedule(this, 1500); } else { diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2JailZone.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2JailZone.java index 0b360f8bde..13e3744d6c 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2JailZone.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2JailZone.java @@ -77,7 +77,7 @@ public class L2JailZone extends L2ZoneType if (player.isJailed()) { // when a player wants to exit jail even if he is still jailed, teleport him back to jail - ThreadPoolManager.getInstance().scheduleGeneral(new TeleportTask(player, JAIL_IN_LOC), 2000); + ThreadPoolManager.schedule(new TeleportTask(player, JAIL_IN_LOC), 2000); character.sendMessage("You cannot cheat your way out of here. You must wait until your jail time is over."); } if (Config.JAIL_DISABLE_TRANSACTION) diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2OlympiadStadiumZone.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2OlympiadStadiumZone.java index 8209ddaf83..55f2f70d6b 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2OlympiadStadiumZone.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2OlympiadStadiumZone.java @@ -144,7 +144,7 @@ public class L2OlympiadStadiumZone extends L2ZoneRespawn // only participants, observers and GMs allowed if (!player.canOverrideCond(PcCondOverride.ZONE_CONDITIONS) && !player.isInOlympiadMode() && !player.inObserverMode()) { - ThreadPoolManager.getInstance().executeGeneral(new KickPlayer(player)); + ThreadPoolManager.execute(new KickPlayer(player)); } else { diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2ResidenceHallTeleportZone.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2ResidenceHallTeleportZone.java index 211ac52c18..063cd551e6 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2ResidenceHallTeleportZone.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2ResidenceHallTeleportZone.java @@ -62,7 +62,7 @@ public class L2ResidenceHallTeleportZone extends L2ResidenceTeleportZone { if ((_teleTask == null) || _teleTask.isDone()) { - _teleTask = ThreadPoolManager.getInstance().scheduleGeneral(new TeleportTask(), 30000); + _teleTask = ThreadPoolManager.schedule(new TeleportTask(), 30000); } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2SayuneZone.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2SayuneZone.java index f096d5eb89..0872062a68 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2SayuneZone.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/zone/type/L2SayuneZone.java @@ -59,7 +59,7 @@ public class L2SayuneZone extends L2ZoneType if (character.isPlayer() && (character.isInCategory(CategoryType.AWAKEN_GROUP) || Config.FREE_JUMPS_FOR_ALL) && !character.getActingPlayer().isMounted() && !character.isTransformed()) { character.setInsideZone(ZoneId.SAYUNE, true); - ThreadPoolManager.getInstance().executeGeneral(new FlyMoveStartTask(this, character.getActingPlayer())); + ThreadPoolManager.execute(new FlyMoveStartTask(this, character.getActingPlayer())); } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/L2GameClient.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/L2GameClient.java index b890cdc278..6bc536e28a 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/L2GameClient.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/L2GameClient.java @@ -113,7 +113,7 @@ public final class L2GameClient extends ChannelInboundHandler _crypt = new Crypt(this); if (Config.CHAR_DATA_STORE_INTERVAL > 0) { - _autoSaveInDB = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoSaveTask(), 300000L, Config.CHAR_DATA_STORE_INTERVAL); + _autoSaveInDB = ThreadPoolManager.scheduleAtFixedRate(new AutoSaveTask(), 300000L, Config.CHAR_DATA_STORE_INTERVAL); } else { @@ -146,7 +146,7 @@ public final class L2GameClient extends ChannelInboundHandler // no long running tasks here, do it async try { - ThreadPoolManager.getInstance().executeGeneral(new DisconnectTask()); + ThreadPoolManager.execute(new DisconnectTask()); } catch (RejectedExecutionException e) { @@ -652,7 +652,7 @@ public final class L2GameClient extends ChannelInboundHandler { cancelCleanup(); } - _cleanupTask = ThreadPoolManager.getInstance().scheduleGeneral(new CleanupTask(), 0); // instant + _cleanupTask = ThreadPoolManager.schedule(new CleanupTask(), 0); // instant } } @@ -802,7 +802,7 @@ public final class L2GameClient extends ChannelInboundHandler { if (_cleanupTask == null) { - _cleanupTask = ThreadPoolManager.getInstance().scheduleGeneral(new CleanupTask(), fast ? 5 : 15000L); + _cleanupTask = ThreadPoolManager.schedule(new CleanupTask(), fast ? 5 : 15000L); } } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index a807430d13..9edd6d2308 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -662,7 +662,7 @@ public class EnterWorld implements IClientIncomingPacket if (Config.HARDWARE_INFO_ENABLED) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { if (client.getHardwareInfo() == null) { diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/clientpackets/RequestPreviewItem.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/clientpackets/RequestPreviewItem.java index a6900f0102..c1db83f07e 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/clientpackets/RequestPreviewItem.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/clientpackets/RequestPreviewItem.java @@ -241,7 +241,7 @@ public final class RequestPreviewItem implements IClientIncomingPacket { activeChar.sendPacket(new ShopPreviewInfo(itemList)); // Schedule task - ThreadPoolManager.getInstance().scheduleGeneral(new RemoveWearItemsTask(activeChar), Config.WEAR_DELAY * 1000); + ThreadPoolManager.schedule(new RemoveWearItemsTask(activeChar), Config.WEAR_DELAY * 1000); } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index e7b3af4a35..6c7ebff02e 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -98,7 +98,7 @@ public final class RequestRestartPoint implements IClientIncomingPacket if ((activeChar.getClan() != null) && castle.getSiege().checkIsAttacker(activeChar.getClan())) { // Schedule respawn delay for attacker - ThreadPoolManager.getInstance().scheduleGeneral(new DeathTask(activeChar), castle.getSiege().getAttackerRespawnDelay()); + ThreadPoolManager.schedule(new DeathTask(activeChar), castle.getSiege().getAttackerRespawnDelay()); if (castle.getSiege().getAttackerRespawnDelay() > 0) { activeChar.sendMessage("You will be re-spawned in " + (castle.getSiege().getAttackerRespawnDelay() / 1000) + " seconds"); diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/clientpackets/UseItem.java index 7d80202cca..d6412dc382 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -246,7 +246,7 @@ public final class UseItem implements IClientIncomingPacket } else if (activeChar.isAttackingNow()) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { // If character is still engaged in strike we should not change weapon if (activeChar.isAttackingNow()) diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/taskmanager/AttackStanceTaskManager.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/taskmanager/AttackStanceTaskManager.java index 6e059c1112..9612f78257 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/taskmanager/AttackStanceTaskManager.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/taskmanager/AttackStanceTaskManager.java @@ -43,7 +43,7 @@ public class AttackStanceTaskManager */ protected AttackStanceTaskManager() { - ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new FightModeScheduler(), 0, 1000); + ThreadPoolManager.scheduleAtFixedRate(new FightModeScheduler(), 0, 1000); } /** diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/taskmanager/TaskManager.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/taskmanager/TaskManager.java index 44879f7839..5d9816577a 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/taskmanager/TaskManager.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/taskmanager/TaskManager.java @@ -223,31 +223,37 @@ public final class TaskManager private boolean launchTask(ExecutedTask task) { - final ThreadPoolManager scheduler = ThreadPoolManager.getInstance(); final TaskTypes type = task.getType(); long delay, interval; switch (type) { case TYPE_STARTUP: + { task.run(); return false; + } case TYPE_SHEDULED: + { delay = Long.valueOf(task.getParams()[0]); - task.scheduled = scheduler.scheduleGeneral(task, delay); + task.scheduled = ThreadPoolManager.schedule(task, delay); return true; + } case TYPE_FIXED_SHEDULED: + { delay = Long.valueOf(task.getParams()[0]); interval = Long.valueOf(task.getParams()[1]); - task.scheduled = scheduler.scheduleGeneralAtFixedRate(task, delay, interval); + task.scheduled = ThreadPoolManager.scheduleAtFixedRate(task, delay, interval); return true; + } case TYPE_TIME: + { try { final Date desired = DateFormat.getInstance().parse(task.getParams()[0]); final long diff = desired.getTime() - System.currentTimeMillis(); if (diff >= 0) { - task.scheduled = scheduler.scheduleGeneral(task, diff); + task.scheduled = ThreadPoolManager.schedule(task, diff); return true; } LOGGER.info("Task " + task.getId() + " is obsoleted."); @@ -256,7 +262,9 @@ public final class TaskManager { } break; + } case TYPE_SPECIAL: + { final ScheduledFuture result = task.getTask().launchSpecial(task); if (result != null) { @@ -264,7 +272,9 @@ public final class TaskManager return true; } break; + } case TYPE_GLOBAL_TASK: + { interval = Long.valueOf(task.getParams()[0]) * 86400000L; final String[] hour = task.getParams()[1].split(":"); @@ -296,10 +306,13 @@ public final class TaskManager { delay += interval; } - task.scheduled = scheduler.scheduleGeneralAtFixedRate(task, delay, interval); + task.scheduled = ThreadPoolManager.scheduleAtFixedRate(task, delay, interval); return true; + } default: + { return false; + } } return false; } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/util/Evolve.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/util/Evolve.java index c01bee7451..101903e150 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/util/Evolve.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/util/Evolve.java @@ -144,11 +144,11 @@ public final class Evolve petSummon.startFeed(); item.setEnchantLevel(petSummon.getLevel()); - ThreadPoolManager.getInstance().scheduleGeneral(new EvolveFinalizer(player, petSummon), 900); + ThreadPoolManager.schedule(new EvolveFinalizer(player, petSummon), 900); if (petSummon.getCurrentFed() <= 0) { - ThreadPoolManager.getInstance().scheduleGeneral(new EvolveFeedWait(player, petSummon), 60000); + ThreadPoolManager.schedule(new EvolveFeedWait(player, petSummon), 60000); } else { @@ -242,11 +242,11 @@ public final class Evolve final L2World world = L2World.getInstance(); world.removeObject(removedItem); - ThreadPoolManager.getInstance().scheduleGeneral(new EvolveFinalizer(player, petSummon), 900); + ThreadPoolManager.schedule(new EvolveFinalizer(player, petSummon), 900); if (petSummon.getCurrentFed() <= 0) { - ThreadPoolManager.getInstance().scheduleGeneral(new EvolveFeedWait(player, petSummon), 60000); + ThreadPoolManager.schedule(new EvolveFeedWait(player, petSummon), 60000); } else { diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/util/MinionList.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/util/MinionList.java index 10bebbe63e..22ba27c49f 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/util/MinionList.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/util/MinionList.java @@ -190,7 +190,7 @@ public class MinionList final int time = respawnTime < 0 ? _master.isRaid() ? (int) Config.RAID_MINION_RESPAWN_TIMER : 0 : respawnTime; if ((time > 0) && !_master.isAlikeDead()) { - ThreadPoolManager.getInstance().scheduleGeneral(new MinionRespawnTask(minion), time); + ThreadPoolManager.schedule(new MinionRespawnTask(minion), time); } } diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/util/Util.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/util/Util.java index 3795e02b4d..e551224ab8 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/util/Util.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/util/Util.java @@ -60,7 +60,7 @@ public final class Util public static void handleIllegalPlayerAction(L2PcInstance actor, String message, IllegalActionPunishmentType punishment) { - ThreadPoolManager.getInstance().scheduleGeneral(new IllegalPlayerActionTask(actor, message, punishment), 5000); + ThreadPoolManager.schedule(new IllegalPlayerActionTask(actor, message, punishment), 5000); } /** diff --git a/L2J_Mobius_HighFive/dist/game/config/General.ini b/L2J_Mobius_HighFive/dist/game/config/General.ini index 934e95dff9..896870279e 100644 --- a/L2J_Mobius_HighFive/dist/game/config/General.ini +++ b/L2J_Mobius_HighFive/dist/game/config/General.ini @@ -149,33 +149,26 @@ SkillCheckGM = False # Thread Configuration # --------------------------------------------------------------------------- -# Extreme caution should be here, set to defaults if you do not know what you are doing. -# These could possibly hurt your servers performance or improve it depending on your server's configuration, size, and other factors. -# Default: 10 -ThreadPoolSizeEffects = 50 +# Determines the amount of scheduled thread pools. If set to -1, the server will decide the amount depending on the available processors. +Default: -1 +ScheduledThreadPoolCount = -1 -# Default: 13 -ThreadPoolSizeGeneral = 65 +# Specifies how many threads will be in a single scheduled pool. +Default: 4 +ThreadsPerScheduledThreadPool = 40 -# Default: 2 -ThreadPoolSizeEvents = 10 +# Determines the amount of instant thread pools. If set to -1, the server will decide the amount depending on the available processors. +Default: -1 +InstantThreadPoolCount = -1 -# Default: 2 -UrgentPacketThreadCoreSize = 20 +# Specifies how many threads will be in a single instant pool. +Default: 2 +ThreadsPerInstantThreadPool = 20 -# Default: 4 -GeneralPacketThreadCoreSize = 20 -# Default: 4 -GeneralThreadCoreSize = 20 - -# Default: 6 -AiMaxThread = 30 - -# Default: 5 -EventsMaxThread = 25 - -# Dead Lock Detector (a separate thread for detecting deadlocks). +# --------------------------------------------------------------------------- +# Dead Lock Detector (separate thread for detecting deadlocks) +# --------------------------------------------------------------------------- # For improved crash logs and automatic restart in deadlock case if enabled. # Check interval is in seconds. # Default: True diff --git a/L2J_Mobius_HighFive/dist/game/data/html/admin/serverinfo.htm b/L2J_Mobius_HighFive/dist/game/data/html/admin/serverinfo.htm index cf06c95dc3..84dd350f5c 100644 --- a/L2J_Mobius_HighFive/dist/game/data/html/admin/serverinfo.htm +++ b/L2J_Mobius_HighFive/dist/game/data/html/admin/serverinfo.htm @@ -8,7 +8,6 @@
-
General: @@ -76,30 +75,5 @@
%totalMem% MB
-
-Thread - General (STP): - %theardInfoGen% -
-Thread - Effects (STP): - %theardInfoEff% -
-Thread - AI (STP): - %theardInfoAi% -
-Thread - Event (STP): - %theardInfoEvent% -
-Thread - Packets (TP): - %theardInfoPack% -
-Thread - I/O Packets (TP): - %theardInfoIOPack% -
-Thread - General Tasks (TP): - %theardInfoGenTask% -
-Thread - Event Tasks (TP): - %theardInfoEvnTask% -
\ No newline at end of file diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/ai/fantasy_isle/Parade.java b/L2J_Mobius_HighFive/dist/game/data/scripts/ai/fantasy_isle/Parade.java index 85ba2dc7e3..624a7ccf86 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/ai/fantasy_isle/Parade.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/ai/fantasy_isle/Parade.java @@ -131,11 +131,11 @@ public final class Parade extends AbstractNpcAI // Starts at 8:00 and repeats every 6 hours. final long diff = timeLeftMilli(8, 0, 0), cycle = 3600000L; - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Start(), diff, cycle); + ThreadPoolManager.scheduleAtFixedRate(new Start(), diff, cycle); // Test - Starts 3 minutes after server startup and repeats every 20 minutes. // final long diff = timeLeftMilli(8, 0, 0), cycle = 600000L; - // ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Start(), 180000L, cycle); + // ThreadPoolManager.scheduleAtFixedRate(new Start(), 180000L, cycle); _log.info("Fantasy Isle: Parade starting at " + new SimpleDateFormat("yyyy/MM/dd HH:mm").format(System.currentTimeMillis() + diff) + " and is scheduled each next " + (cycle / 3600000) + " hours."); } @@ -173,9 +173,9 @@ public final class Parade extends AbstractNpcAI public void run() { load(); - spawnTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Spawn(), 0, 5000); - deleteTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Delete(), 10000, 1000); - cleanTask = ThreadPoolManager.getInstance().scheduleGeneral(new Clean(), 420000); + spawnTask = ThreadPoolManager.scheduleAtFixedRate(new Spawn(), 0, 5000); + deleteTask = ThreadPoolManager.scheduleAtFixedRate(new Delete(), 10000, 1000); + cleanTask = ThreadPoolManager.schedule(new Clean(), 420000); } } diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/ai/group_template/DenOfEvil.java b/L2J_Mobius_HighFive/dist/game/data/scripts/ai/group_template/DenOfEvil.java index 36e2a545b3..e9d40f8caf 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/ai/group_template/DenOfEvil.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/ai/group_template/DenOfEvil.java @@ -128,7 +128,7 @@ public final class DenOfEvil extends AbstractNpcAI zone.addSkill(skillId, skillLevel + 1); if (skillLevel == 3) // 3+1=4 { - ThreadPoolManager.getInstance().scheduleAi(new KashaDestruction(zone), 2 * 60 * 1000l); + ThreadPoolManager.schedule(new KashaDestruction(zone), 2 * 60 * 1000l); zone.broadcastPacket(SystemMessage.getSystemMessage(SystemMessageId.KASHA_S_EYE_PITCHES_AND_TOSSES_LIKE_IT_S_ABOUT_TO_EXPLODE)); } else if (skillLevel == 2) @@ -141,7 +141,7 @@ public final class DenOfEvil extends AbstractNpcAI @Override public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) { - ThreadPoolManager.getInstance().scheduleAi(new RespawnNewEye(npc.getLocation()), 15000); + ThreadPoolManager.schedule(new RespawnNewEye(npc.getLocation()), 15000); final L2EffectZone zone = ZoneManager.getInstance().getZone(npc, L2EffectZone.class); if (zone == null) { @@ -216,7 +216,7 @@ public final class DenOfEvil extends AbstractNpcAI final L2Npc npc = (L2Npc) character; if (Util.contains(EYE_IDS, npc.getId())) { - ThreadPoolManager.getInstance().scheduleAi(new RespawnNewEye(npc.getLocation()), 15000); + ThreadPoolManager.schedule(new RespawnNewEye(npc.getLocation()), 15000); } } } diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/ai/group_template/RandomSpawn.java b/L2J_Mobius_HighFive/dist/game/data/scripts/ai/group_template/RandomSpawn.java index 3213b97da0..0a7bee71bb 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/ai/group_template/RandomSpawn.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/ai/group_template/RandomSpawn.java @@ -91,7 +91,7 @@ public final class RandomSpawn extends AbstractNpcAI if (!npc.isInsideRadius(loc, 200, false, false)) { npc.getSpawn().setLocation(loc); - ThreadPoolManager.getInstance().scheduleGeneral(new Teleport(npc, loc), 100); + ThreadPoolManager.schedule(new Teleport(npc, loc), 100); } return super.onSpawn(npc); } diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/ai/individual/QueenAnt.java b/L2J_Mobius_HighFive/dist/game/data/scripts/ai/individual/QueenAnt.java index ecb9c227a7..f2182e27d2 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/ai/individual/QueenAnt.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/ai/individual/QueenAnt.java @@ -246,7 +246,7 @@ public final class QueenAnt extends AbstractNpcAI } case QUEEN: { - _task = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new QueenAntTask(), 5 * 1000, 5 * 1000); + _task = ThreadPoolManager.scheduleAtFixedRate(new QueenAntTask(), 5 * 1000, 5 * 1000); break; } } diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/ai/npc/ForgeOfTheGods/TarBeetleSpawn.java b/L2J_Mobius_HighFive/dist/game/data/scripts/ai/npc/ForgeOfTheGods/TarBeetleSpawn.java index b87d00defa..ccd86d1e70 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/ai/npc/ForgeOfTheGods/TarBeetleSpawn.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/ai/npc/ForgeOfTheGods/TarBeetleSpawn.java @@ -55,8 +55,8 @@ public class TarBeetleSpawn implements IXmlReader parseDatapackFile("data/spawnZones/tar_beetle.xml"); if (!zones.isEmpty()) { - spawnTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(() -> zones.forEach(SpawnZone::refreshSpawn), 1000, 60000); - shotTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(() -> zones.forEach(SpawnZone::refreshShots), 300000, 300000); + spawnTask = ThreadPoolManager.scheduleAtFixedRate(() -> zones.forEach(SpawnZone::refreshSpawn), 1000, 60000); + shotTask = ThreadPoolManager.scheduleAtFixedRate(() -> zones.forEach(SpawnZone::refreshShots), 300000, 300000); } } diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/ai/npc/NpcBuffers/NpcBufferAI.java b/L2J_Mobius_HighFive/dist/game/data/scripts/ai/npc/NpcBuffers/NpcBufferAI.java index 9c9508421f..6ad24ec99e 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/ai/npc/NpcBuffers/NpcBufferAI.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/ai/npc/NpcBuffers/NpcBufferAI.java @@ -110,7 +110,7 @@ public class NpcBufferAI implements Runnable break; } } - ThreadPoolManager.getInstance().scheduleGeneral(this, _skillData.getDelay()); + ThreadPoolManager.schedule(this, _skillData.getDelay()); } /** diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/ai/npc/NpcBuffers/NpcBuffers.java b/L2J_Mobius_HighFive/dist/game/data/scripts/ai/npc/NpcBuffers/NpcBuffers.java index b09daf8c8e..4eb2134add 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/ai/npc/NpcBuffers/NpcBuffers.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/ai/npc/NpcBuffers/NpcBuffers.java @@ -54,7 +54,7 @@ public final class NpcBuffers extends AbstractNpcAI final NpcBufferData data = _npcBuffers.getNpcBuffer(npc.getId()); for (NpcBufferSkillData skill : data.getSkills()) { - ThreadPoolManager.getInstance().scheduleAi(new NpcBufferAI(npc, skill), skill.getInitialDelay()); + ThreadPoolManager.schedule(new NpcBufferAI(npc, skill), skill.getInitialDelay()); } return super.onSpawn(npc); } diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/ai/npc/NpcBuffers/impl/CabaleBuffer.java b/L2J_Mobius_HighFive/dist/game/data/scripts/ai/npc/NpcBuffers/impl/CabaleBuffer.java index 4d49cf5a38..99472b9e85 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/ai/npc/NpcBuffers/impl/CabaleBuffer.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/ai/npc/NpcBuffers/impl/CabaleBuffer.java @@ -76,8 +76,8 @@ public final class CabaleBuffer extends AbstractNpcAI @Override public String onSpawn(L2Npc npc) { - ThreadPoolManager.getInstance().scheduleGeneral(new CabaleAI(npc), 3000); - ThreadPoolManager.getInstance().scheduleGeneral(new Talk(npc), 60000); + ThreadPoolManager.schedule(new CabaleAI(npc), 3000); + ThreadPoolManager.schedule(new Talk(npc), 60000); return super.onSpawn(npc); } @@ -101,7 +101,7 @@ public final class CabaleBuffer extends AbstractNpcAI messages = PREACHER_MSG; } broadcastSay(_npc, messages[getRandom(messages.length)], null, -1); - ThreadPoolManager.getInstance().scheduleGeneral(this, 60000); + ThreadPoolManager.schedule(this, 60000); } } } @@ -224,7 +224,7 @@ public final class CabaleBuffer extends AbstractNpcAI break; } } - ThreadPoolManager.getInstance().scheduleGeneral(this, 3000); + ThreadPoolManager.schedule(this, 3000); } /** diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/conquerablehalls/FortressOfTheDead/FortressOfTheDead.java b/L2J_Mobius_HighFive/dist/game/data/scripts/conquerablehalls/FortressOfTheDead/FortressOfTheDead.java index 22d1ae5cb9..4d57f6b97f 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/conquerablehalls/FortressOfTheDead/FortressOfTheDead.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/conquerablehalls/FortressOfTheDead/FortressOfTheDead.java @@ -159,7 +159,7 @@ public final class FortressOfTheDead extends ClanHallSiegeEngine { cancelSiegeTask(); final long scheduleTime = (24 - hoursLeft) * 10 * 60000; - _siegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new SiegeStarts(), scheduleTime); + _siegeTask = ThreadPoolManager.schedule(new SiegeStarts(), scheduleTime); } else { diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/conquerablehalls/RainbowSpringsChateau/RainbowSpringsChateau.java b/L2J_Mobius_HighFive/dist/game/data/scripts/conquerablehalls/RainbowSpringsChateau/RainbowSpringsChateau.java index 3f80d99978..96d4582ddb 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/conquerablehalls/RainbowSpringsChateau/RainbowSpringsChateau.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/conquerablehalls/RainbowSpringsChateau/RainbowSpringsChateau.java @@ -116,7 +116,7 @@ public final class RainbowSpringsChateau extends ClanHallSiegeEngine } if (_acceptedClans.size() >= 2) { - _nextSiege = ThreadPoolManager.getInstance().scheduleGeneral(new SiegeStart(), 3600000); + _nextSiege = ThreadPoolManager.schedule(new SiegeStart(), 3600000); _rainbow.updateSiegeStatus(SiegeStatus.WAITING_BATTLE); } else @@ -140,7 +140,7 @@ public final class RainbowSpringsChateau extends ClanHallSiegeEngine // XXX _rainbow.siegeStarts(); spawnGourds(); - _siegeEnd = ThreadPoolManager.getInstance().scheduleGeneral(new SiegeEnd(null), _rainbow.getSiegeLenght() - 120000); + _siegeEnd = ThreadPoolManager.schedule(new SiegeEnd(null), _rainbow.getSiegeLenght() - 120000); } } @@ -178,10 +178,10 @@ public final class RainbowSpringsChateau extends ClanHallSiegeEngine // XXX _rainbow.siegeEnds(); - ThreadPoolManager.getInstance().scheduleGeneral(new SetFinalAttackers(), _rainbow.getNextSiegeTime()); + ThreadPoolManager.schedule(new SetFinalAttackers(), _rainbow.getNextSiegeTime()); setRegistrationEndString((_rainbow.getNextSiegeTime() + System.currentTimeMillis()) - 3600000); // Teleport out of the arenas is made 2 mins after game ends - ThreadPoolManager.getInstance().scheduleGeneral(new TeleportBack(), 120000); + ThreadPoolManager.schedule(new TeleportBack(), 120000); } } @@ -287,7 +287,7 @@ public final class RainbowSpringsChateau extends ClanHallSiegeEngine if (delay > -1) { setRegistrationEndString(delay - 3600000); - _nextSiege = ThreadPoolManager.getInstance().scheduleGeneral(new SetFinalAttackers(), delay); + _nextSiege = ThreadPoolManager.schedule(new SetFinalAttackers(), delay); } else { @@ -616,7 +616,7 @@ public final class RainbowSpringsChateau extends ClanHallSiegeEngine { _siegeEnd.cancel(false); } - ThreadPoolManager.getInstance().executeGeneral(new SiegeEnd(clan)); + ThreadPoolManager.execute(new SiegeEnd(clan)); } } @@ -896,7 +896,7 @@ public final class RainbowSpringsChateau extends ClanHallSiegeEngine public static void launchSiege() { _nextSiege.cancel(false); - ThreadPoolManager.getInstance().executeGeneral(new SiegeStart()); + ThreadPoolManager.execute(new SiegeStart()); } @Override @@ -906,7 +906,7 @@ public final class RainbowSpringsChateau extends ClanHallSiegeEngine { _siegeEnd.cancel(false); } - ThreadPoolManager.getInstance().executeGeneral(new SiegeEnd(null)); + ThreadPoolManager.execute(new SiegeEnd(null)); } public static void updateAdminDate(long date) @@ -923,7 +923,7 @@ public final class RainbowSpringsChateau extends ClanHallSiegeEngine } date -= 3600000; setRegistrationEndString(date); - _nextSiege = ThreadPoolManager.getInstance().scheduleGeneral(new SetFinalAttackers(), _rainbow.getNextSiegeTime()); + _nextSiege = ThreadPoolManager.schedule(new SetFinalAttackers(), _rainbow.getNextSiegeTime()); } public static void main(String[] args) diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/conquerablehalls/flagwar/FlagWar.java b/L2J_Mobius_HighFive/dist/game/data/scripts/conquerablehalls/flagwar/FlagWar.java index 78059d9766..e45df52b7d 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/conquerablehalls/flagwar/FlagWar.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/conquerablehalls/flagwar/FlagWar.java @@ -402,7 +402,7 @@ public abstract class FlagWar extends ClanHallSiegeEngine doUnSpawns(data); } - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { for (int doorId : INNER_DOORS_TO_OPEN) { @@ -457,7 +457,7 @@ public abstract class FlagWar extends ClanHallSiegeEngine Broadcast.toAllOnlinePlayers(msg); _hall.updateSiegeStatus(SiegeStatus.WAITING_BATTLE); - _siegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new SiegeStarts(), 3600000); + _siegeTask = ThreadPoolManager.schedule(new SiegeStarts(), 3600000); } @Override @@ -499,7 +499,7 @@ public abstract class FlagWar extends ClanHallSiegeEngine } // Schedule open doors closement and siege start in 2 minutes - ThreadPoolManager.getInstance().scheduleGeneral(new CloseOutterDoorsTask(this), 300000); + ThreadPoolManager.schedule(new CloseOutterDoorsTask(this), 300000); } /** diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/custom/events/Elpies/Elpies.java b/L2J_Mobius_HighFive/dist/game/data/scripts/custom/events/Elpies/Elpies.java index 515032ca7b..b542658795 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/custom/events/Elpies/Elpies.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/custom/events/Elpies/Elpies.java @@ -111,7 +111,7 @@ public final class Elpies extends Event Broadcast.toAllOnlinePlayers("Help us exterminate them!"); Broadcast.toAllOnlinePlayers("You have " + EVENT_DURATION_MINUTES + " minutes!"); - _eventTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _eventTask = ThreadPoolManager.schedule(() -> { Broadcast.toAllOnlinePlayers("Time is up!"); eventStop(); diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/custom/events/Race/Race.java b/L2J_Mobius_HighFive/dist/game/data/scripts/custom/events/Race/Race.java index 7be7a11138..02e68b34b4 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/custom/events/Race/Race.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/custom/events/Race/Race.java @@ -137,7 +137,7 @@ public final class Race extends Event Broadcast.toAllOnlinePlayers("Visit Event Manager in Dion village and signup, you have " + _time_register + " min before Race Start..."); // Schedule Event end - _eventTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> StartRace(), _time_register * 60 * 1000); + _eventTask = ThreadPoolManager.schedule(() -> StartRace(), _time_register * 60 * 1000); return true; @@ -180,7 +180,7 @@ public final class Race extends Event } } // Schedule timeup for Race - _eventTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> timeUp(), _time_race * 60 * 1000); + _eventTask = ThreadPoolManager.schedule(() -> timeUp(), _time_race * 60 * 1000); } @Override diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/AI/EnergySeeds.java b/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/AI/EnergySeeds.java index 0d5891e878..fd3b3fc789 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/AI/EnergySeeds.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/AI/EnergySeeds.java @@ -943,7 +943,7 @@ public class EnergySeeds extends AbstractNpcAI public void scheduleRespawn(long waitTime) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { // if the AI is inactive, do not spawn the NPC if (isSeedActive(_seedId)) diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/instances/HallOfErosionAttack/HallOfErosionAttack.java b/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/instances/HallOfErosionAttack/HallOfErosionAttack.java index 09b8fc8a2d..a386b1ca5f 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/instances/HallOfErosionAttack/HallOfErosionAttack.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/instances/HallOfErosionAttack/HallOfErosionAttack.java @@ -561,8 +561,8 @@ public class HallOfErosionAttack extends AbstractNpcAI npc.deleteMe(); world.deadTumor = addSpawn(TUMOR_DEAD, loc, world.getInstanceId()); world.deadTumors.add(world.deadTumor); - ThreadPoolManager.getInstance().scheduleGeneral(new TumorRevival(world.deadTumor, world), tumorRespawnTime); - ThreadPoolManager.getInstance().scheduleGeneral(new RegenerationCoffinSpawn(world.deadTumor, world), 20000); + ThreadPoolManager.schedule(new TumorRevival(world.deadTumor, world), tumorRespawnTime); + ThreadPoolManager.schedule(new RegenerationCoffinSpawn(world.deadTumor, world), 20000); if (world.tumorCount >= 1) { broadCastPacket(world, new ExShowScreenMessage(NpcStringId.THE_TUMOR_INSIDE_S1_HAS_BEEN_DESTROYED_NIN_ORDER_TO_DRAW_OUT_THE_COWARDLY_COHEMENES_YOU_MUST_DESTROY_ALL_THE_TUMORS, 2, 8000)); diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/instances/HallOfErosionDefence/HallOfErosionDefence.java b/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/instances/HallOfErosionDefence/HallOfErosionDefence.java index c9b6749c99..457840d315 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/instances/HallOfErosionDefence/HallOfErosionDefence.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/instances/HallOfErosionDefence/HallOfErosionDefence.java @@ -358,7 +358,7 @@ public class HallOfErosionDefence extends AbstractNpcAI world.addAllowed(player.getObjectId()); } - ((HEDWorld) world).finishTask = ThreadPoolManager.getInstance().scheduleGeneral(new FinishTask((HEDWorld) world), 20 * 60000); + ((HEDWorld) world).finishTask = ThreadPoolManager.schedule(new FinishTask((HEDWorld) world), 20 * 60000); runTumors((HEDWorld) world); } } @@ -391,7 +391,7 @@ public class HallOfErosionDefence extends AbstractNpcAI { final L2Npc npc = addSpawn(spawn[0], spawn[1], spawn[2], spawn[3], spawn[4], false, 0, false, world.getInstanceId()); world.deadTumors.add(npc); - ThreadPoolManager.getInstance().scheduleGeneral(new RegenerationCoffinSpawn(npc, world), 1000); + ThreadPoolManager.schedule(new RegenerationCoffinSpawn(npc, world), 1000); } } @@ -403,7 +403,7 @@ public class HallOfErosionDefence extends AbstractNpcAI } } - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { if (!conquestEnded) { @@ -544,7 +544,7 @@ public class HallOfErosionDefence extends AbstractNpcAI world.deadTumor = addSpawn(TUMOR_DEAD, npc.getLocation(), world.getInstanceId()); world.deadTumors.add(world.deadTumor); broadCastPacket(world, new ExShowScreenMessage(NpcStringId.THE_TUMOR_INSIDE_S1_HAS_BEEN_DESTROYED_NTHE_NEARBY_UNDEAD_THAT_WERE_ATTACKING_SEED_OF_LIFE_START_LOSING_THEIR_ENERGY_AND_RUN_AWAY, 2, 8000)); - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { world.deadTumor.deleteMe(); final L2Npc tumor = addSpawn(TUMOR_ALIVE, world.deadTumor.getLocation(), world.getInstanceId()); diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/instances/HeartInfinityAttack/HeartInfinityAttack.java b/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/instances/HeartInfinityAttack/HeartInfinityAttack.java index fb9e94db65..c04f29beb2 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/instances/HeartInfinityAttack/HeartInfinityAttack.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/instances/HeartInfinityAttack/HeartInfinityAttack.java @@ -358,7 +358,7 @@ public class HeartInfinityAttack extends Quest } conquestBegun = true; - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { for (int objId : world.getAllowed()) { @@ -366,7 +366,7 @@ public class HeartInfinityAttack extends Quest player.showQuestMovie(2); // ExStartScenePlayer.SCENE_ECHMUS_OPENING } - ThreadPoolManager.getInstance().scheduleGeneral(() -> conquestBegins(world), 62500); + ThreadPoolManager.schedule(() -> conquestBegins(world), 62500); }, 20000); } @@ -420,7 +420,7 @@ public class HeartInfinityAttack extends Quest world.hounds.add(addSpawn(HOUND, -179224, 209624, -15504, 16384, false, 0, false, world.getInstanceId())); world.hounds.add(addSpawn(HOUND, -179880, 209464, -15504, 16384, false, 0, false, world.getInstanceId())); world.startTime = System.currentTimeMillis(); - world.timerTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new TimerTask(world), 298 * 1000, 5 * 60 * 1000); + world.timerTask = ThreadPoolManager.scheduleAtFixedRate(new TimerTask(world), 298 * 1000, 5 * 60 * 1000); } @Override @@ -607,8 +607,8 @@ public class HeartInfinityAttack extends Quest npc.deleteMe(); world.deadTumor = addSpawn(DEADTUMOR, loc, world.getInstanceId()); world.deadTumors.add(world.deadTumor); - ThreadPoolManager.getInstance().scheduleGeneral(new TumorRevival(world.deadTumor, world), tumorRespawnTime); - ThreadPoolManager.getInstance().scheduleGeneral(new RegenerationCoffinSpawn(world.deadTumor, world), 20000); + ThreadPoolManager.schedule(new TumorRevival(world.deadTumor, world), tumorRespawnTime); + ThreadPoolManager.schedule(new RegenerationCoffinSpawn(world.deadTumor, world), 20000); if (world.tumorCount < 1) { houndBlocked = true; @@ -825,7 +825,7 @@ public class HeartInfinityAttack extends Quest } } - ThreadPoolManager.getInstance().scheduleGeneral(() -> broadCastPacket(world, new ExShowScreenMessage(NpcStringId.EKIMUS_HAS_SENSED_ABNORMAL_ACTIVITY_NTHE_ADVANCING_PARTY_IS_FORCEFULLY_EXPELLED, 2, 8000)), 10000); + ThreadPoolManager.schedule(() -> broadCastPacket(world, new ExShowScreenMessage(NpcStringId.EKIMUS_HAS_SENSED_ABNORMAL_ACTIVITY_NTHE_ADVANCING_PARTY_IS_FORCEFULLY_EXPELLED, 2, 8000)), 10000); } protected void conquestConclusion(HIAWorld world) diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/instances/HeartInfinityDefence/HeartInfinityDefence.java b/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/instances/HeartInfinityDefence/HeartInfinityDefence.java index 9c7d5ae091..da1b7bec00 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/instances/HeartInfinityDefence/HeartInfinityDefence.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/instances/HeartInfinityDefence/HeartInfinityDefence.java @@ -365,15 +365,15 @@ public class HeartInfinityDefence extends Quest } } ((HIDWorld) world).startTime = System.currentTimeMillis(); - ((HIDWorld) world).finishTask = ThreadPoolManager.getInstance().scheduleGeneral(new FinishTask((HIDWorld) world), 30 * 60000); - ((HIDWorld) world).timerTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new TimerTask((HIDWorld) world), 298 * 1000, 5 * 60 * 1000); + ((HIDWorld) world).finishTask = ThreadPoolManager.schedule(new FinishTask((HIDWorld) world), 30 * 60000); + ((HIDWorld) world).timerTask = ThreadPoolManager.scheduleAtFixedRate(new TimerTask((HIDWorld) world), 298 * 1000, 5 * 60 * 1000); conquestBegins((HIDWorld) world); } } private void conquestBegins(HIDWorld world) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { broadCastPacket(world, new ExShowScreenMessage(NpcStringId.YOU_CAN_HEAR_THE_UNDEAD_OF_EKIMUS_RUSHING_TOWARD_YOU_S1_S2_IT_HAS_NOW_BEGUN, 2, 8000)); for (int[] spawn1 : ROOMS_MOBS) @@ -406,7 +406,7 @@ public class HeartInfinityDefence extends Quest InstanceManager.getInstance().getInstance(world.getInstanceId()).getDoor(14240102).openMe(); preawakenedEchmus = addSpawn(29161, -179534, 208510, -15496, 16342, false, 0, false, world.getInstanceId()); - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { if (!conquestEnded) { @@ -423,7 +423,7 @@ public class HeartInfinityDefence extends Quest } }, 60000); - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { if (!conquestEnded) { @@ -452,7 +452,7 @@ public class HeartInfinityDefence extends Quest } }, tumorRespawnTime); - world.wagonSpawnTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(() -> addSpawn(SOULWAGON, -179544, 207400, -15496, 0, false, 0, false, world.getInstanceId()), 1000, wagonRespawnTime); + world.wagonSpawnTask = ThreadPoolManager.scheduleAtFixedRate(() -> addSpawn(SOULWAGON, -179544, 207400, -15496, 0, false, 0, false, world.getInstanceId()), 1000, wagonRespawnTime); }, 20000); } @@ -593,7 +593,7 @@ public class HeartInfinityDefence extends Quest wagonRespawnTime += 10000; broadCastPacket(world, new ExShowScreenMessage(NpcStringId.THE_TUMOR_INSIDE_S1_HAS_BEEN_DESTROYED_NTHE_SPEED_THAT_EKIMUS_CALLS_OUT_HIS_PREY_HAS_SLOWED_DOWN, 2, 8000)); - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { world.deadTumor.deleteMe(); final L2Npc alivetumor = addSpawn(ALIVETUMOR, loc, world.getInstanceId()); diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/vehicles/AirShipController.java b/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/vehicles/AirShipController.java index f333fd7fae..1ee06458a5 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/vehicles/AirShipController.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/vehicles/AirShipController.java @@ -307,11 +307,11 @@ public abstract class AirShipController extends Quest } } - ThreadPoolManager.getInstance().scheduleGeneral(_decayTask, 1000); + ThreadPoolManager.schedule(_decayTask, 1000); } else { - _departSchedule = ThreadPoolManager.getInstance().scheduleGeneral(_departTask, DEPART_INTERVAL); + _departSchedule = ThreadPoolManager.schedule(_departTask, DEPART_INTERVAL); } } } diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/vehicles/AirShipGludioGracia/AirShipGludioGracia.java b/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/vehicles/AirShipGludioGracia/AirShipGludioGracia.java index a76eb5497a..59bd0bec81 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/vehicles/AirShipGludioGracia/AirShipGludioGracia.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/gracia/vehicles/AirShipGludioGracia/AirShipGludioGracia.java @@ -252,7 +252,7 @@ public final class AirShipGludioGracia extends Quest implements Runnable case 1: // _ship.teleToLocation(-167874, 256731, -509, 41035, false); _ship.setOustLoc(OUST_GRACIA); - ThreadPoolManager.getInstance().scheduleGeneral(this, 5000); + ThreadPoolManager.schedule(this, 5000); break; case 2: _ship.executePath(WARPGATE_TO_GRACIA); @@ -261,7 +261,7 @@ public final class AirShipGludioGracia extends Quest implements Runnable broadcastInGracia(NpcStringId.THE_REGULARLY_SCHEDULED_AIRSHIP_HAS_ARRIVED_IT_WILL_DEPART_FOR_THE_ADEN_CONTINENT_IN_1_MINUTE); _ship.setInDock(GRACIA_DOCK_ID); _ship.oustPlayers(); - ThreadPoolManager.getInstance().scheduleGeneral(this, 60000); + ThreadPoolManager.schedule(this, 60000); break; case 4: broadcastInGracia(NpcStringId.THE_REGULARLY_SCHEDULED_AIRSHIP_THAT_FLIES_TO_THE_ADEN_CONTINENT_HAS_DEPARTED); @@ -271,7 +271,7 @@ public final class AirShipGludioGracia extends Quest implements Runnable case 5: // _ship.teleToLocation(-157261, 255664, 221, 64781, false); _ship.setOustLoc(OUST_GLUDIO); - ThreadPoolManager.getInstance().scheduleGeneral(this, 5000); + ThreadPoolManager.schedule(this, 5000); break; case 6: _ship.executePath(WARPGATE_TO_GLUDIO); @@ -280,7 +280,7 @@ public final class AirShipGludioGracia extends Quest implements Runnable broadcastInGludio(NpcStringId.THE_REGULARLY_SCHEDULED_AIRSHIP_HAS_ARRIVED_IT_WILL_DEPART_FOR_THE_GRACIA_CONTINENT_IN_1_MINUTE); _ship.setInDock(GLUDIO_DOCK_ID); _ship.oustPlayers(); - ThreadPoolManager.getInstance().scheduleGeneral(this, 60000); + ThreadPoolManager.schedule(this, 60000); break; } _cycle++; diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/admincommandhandlers/AdminEditChar.java b/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/admincommandhandlers/AdminEditChar.java index 244c567376..3acdaad1dc 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/admincommandhandlers/AdminEditChar.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/admincommandhandlers/AdminEditChar.java @@ -385,7 +385,7 @@ public class AdminEditChar implements IAdminCommandHandler if ((race != player.getRace()) || (((race == Race.HUMAN) || (race == Race.ORC)) && (isMage != player.isMageClass()))) { TransformData.getInstance().transformPlayer(105, player); - ThreadPoolManager.getInstance().scheduleGeneral(new Untransform(player), 200); + ThreadPoolManager.schedule(new Untransform(player), 200); } } else @@ -493,7 +493,7 @@ public class AdminEditChar implements IAdminCommandHandler player.broadcastUserInfo(); // Transform-untransorm player quickly to force the client to reload the character textures TransformData.getInstance().transformPlayer(105, player); - ThreadPoolManager.getInstance().scheduleGeneral(new Untransform(player), 200); + ThreadPoolManager.schedule(new Untransform(player), 200); } else if (command.startsWith("admin_setcolor")) diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/admincommandhandlers/AdminMonsterRace.java b/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/admincommandhandlers/AdminMonsterRace.java index f68e70e567..45bb8f1ef5 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/admincommandhandlers/AdminMonsterRace.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/admincommandhandlers/AdminMonsterRace.java @@ -109,7 +109,7 @@ public class AdminMonsterRace implements IAdminCommandHandler activeChar.sendPacket(spk); activeChar.broadcastPacket(spk); - ThreadPoolManager.getInstance().scheduleGeneral(new RunRace(codes, activeChar), 5000); + ThreadPoolManager.schedule(new RunRace(codes, activeChar), 5000); } } @@ -139,7 +139,7 @@ public class AdminMonsterRace implements IAdminCommandHandler final MonRaceInfo spk = new MonRaceInfo(codes[2][0], codes[2][1], MonsterRace.getInstance().getMonsters(), MonsterRace.getInstance().getSpeeds()); activeChar.sendPacket(spk); activeChar.broadcastPacket(spk); - ThreadPoolManager.getInstance().scheduleGeneral(new RunEnd(activeChar), 30000); + ThreadPoolManager.schedule(new RunEnd(activeChar), 30000); } } diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/admincommandhandlers/AdminPForge.java b/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/admincommandhandlers/AdminPForge.java index 2882d9a2d8..a87860d85a 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/admincommandhandlers/AdminPForge.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/admincommandhandlers/AdminPForge.java @@ -553,7 +553,7 @@ public final class AdminPForge implements IAdminCommandHandler p.setBuffers(bb, activeChar.getClient(), new NioNetStringBuffer(2000)); if (p.read()) { - ThreadPoolManager.getInstance().executePacket(p); + ThreadPoolManager.execute(p); } } } diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/admincommandhandlers/AdminServerInfo.java b/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/admincommandhandlers/AdminServerInfo.java index 67c7efe6d1..6796381333 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/admincommandhandlers/AdminServerInfo.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/admincommandhandlers/AdminServerInfo.java @@ -20,15 +20,14 @@ import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Date; import java.util.HashSet; -import java.util.Map.Entry; import java.util.Set; import java.util.concurrent.TimeUnit; import com.l2jmobius.Config; import com.l2jmobius.gameserver.GameServer; import com.l2jmobius.gameserver.GameTimeController; -import com.l2jmobius.gameserver.ThreadPoolManager; import com.l2jmobius.gameserver.cache.HtmCache; +import com.l2jmobius.gameserver.data.xml.impl.AdminData; import com.l2jmobius.gameserver.handler.IAdminCommandHandler; import com.l2jmobius.gameserver.model.L2World; import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; @@ -71,14 +70,6 @@ public class AdminServerInfo implements IAdminCommandHandler html.replace("%usedMem%", (RunTime.maxMemory() / mb) - (((RunTime.maxMemory() - RunTime.totalMemory()) + RunTime.freeMemory()) / mb)); html.replace("%freeMem%", ((RunTime.maxMemory() - RunTime.totalMemory()) + RunTime.freeMemory()) / mb); html.replace("%totalMem%", Runtime.getRuntime().maxMemory() / 1048576); - html.replace("%theardInfoGen%", buildTheardInfo("GENERAL")); - html.replace("%theardInfoEff%", buildTheardInfo("EFFECTS")); - html.replace("%theardInfoAi%", buildTheardInfo("AI")); - html.replace("%theardInfoEvent%", buildTheardInfo("EVENT")); - html.replace("%theardInfoPack%", buildTheardInfo("PACKETS")); - html.replace("%theardInfoIOPack%", buildTheardInfo("IOPACKETS")); - html.replace("%theardInfoGenTask%", buildTheardInfo("GENERAL_TASKS")); - html.replace("%theardInfoEvnTask%", buildTheardInfo("EVENT_TASKS")); activeChar.sendPacket(html); } return true; @@ -92,25 +83,7 @@ public class AdminServerInfo implements IAdminCommandHandler time -= TimeUnit.DAYS.toMillis(days); final long hours = TimeUnit.MILLISECONDS.toHours(time); time -= TimeUnit.HOURS.toMillis(hours); - final long minutes = TimeUnit.MILLISECONDS.toMinutes(time); - - return days + " Days, " + hours + " Hours, " + minutes + " Minutes"; - } - - private String buildTheardInfo(String category) - { - final StringBuilder tb = new StringBuilder(); - - tb.append(""); - for (Entry info : ThreadPoolManager.getInstance().getStats(category).getSet().entrySet()) - { - tb.append(""); - tb.append(""); - tb.append(""); - tb.append(""); - } - tb.append("
" + info.getKey() + ":" + info.getValue() + "
"); - return tb.toString(); + return days + " Days, " + hours + " Hours, " + TimeUnit.MILLISECONDS.toMinutes(time) + " Minutes"; } private int getPlayersCount(String type) @@ -119,7 +92,7 @@ public class AdminServerInfo implements IAdminCommandHandler { case "ALL": { - return L2World.getInstance().getAllPlayersCount(); + return L2World.getInstance().getPlayers().size(); } case "OFF_TRADE": { @@ -138,7 +111,7 @@ public class AdminServerInfo implements IAdminCommandHandler case "GM": { int onlineGMcount = 0; - for (L2PcInstance gm : L2World.getInstance().getAllGMs()) + for (L2PcInstance gm : AdminData.getInstance().getAllGms(true)) { if ((gm != null) && gm.isOnline() && (gm.getClient() != null) && !gm.getClient().isDetached()) { @@ -153,7 +126,7 @@ public class AdminServerInfo implements IAdminCommandHandler for (L2PcInstance onlinePlayer : L2World.getInstance().getPlayers()) { - if (((onlinePlayer != null) && (onlinePlayer.getClient() != null)) && !onlinePlayer.getClient().isDetached()) + if ((onlinePlayer != null) && (onlinePlayer.getClient() != null) && !onlinePlayer.getClient().isDetached()) { realPlayers.add(onlinePlayer.getIPAddress()); } diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/admincommandhandlers/AdminTest.java b/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/admincommandhandlers/AdminTest.java index dda90b86fb..b048d5e331 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/admincommandhandlers/AdminTest.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/admincommandhandlers/AdminTest.java @@ -46,7 +46,7 @@ public class AdminTest implements IAdminCommandHandler { if (command.equals("admin_stats")) { - for (String line : ThreadPoolManager.getInstance().getStats()) + for (String line : ThreadPoolManager.getStats()) { activeChar.sendMessage(line); } diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/effecthandlers/ServitorShare.java b/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/effecthandlers/ServitorShare.java index b9e178f307..5f9a7c2f99 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/effecthandlers/ServitorShare.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/effecthandlers/ServitorShare.java @@ -74,7 +74,7 @@ public final class ServitorShare extends AbstractEffect final L2Character effected = info.getEffected().isPlayer() ? info.getEffected().getSummon() : info.getEffected().getActingPlayer(); if (effected != null) { - ThreadPoolManager.getInstance().scheduleEffect(new ScheduledEffectExitTask(effected, info.getSkill().getId()), 100); + ThreadPoolManager.schedule(new ScheduledEffectExitTask(effected, info.getSkill().getId()), 100); } } } diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/punishmenthandlers/JailHandler.java b/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/punishmenthandlers/JailHandler.java index 734343a166..443532fdff 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/punishmenthandlers/JailHandler.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/punishmenthandlers/JailHandler.java @@ -168,7 +168,7 @@ public class JailHandler implements IPunishmentHandler OlympiadManager.getInstance().removeDisconnectedCompetitor(player); } - ThreadPoolManager.getInstance().scheduleGeneral(new TeleportTask(player, L2JailZone.getLocationIn()), 2000); + ThreadPoolManager.schedule(new TeleportTask(player, L2JailZone.getLocationIn()), 2000); // Open a Html message to inform the player final NpcHtmlMessage msg = new NpcHtmlMessage(); @@ -204,7 +204,7 @@ public class JailHandler implements IPunishmentHandler */ private static void removeFromPlayer(L2PcInstance player) { - ThreadPoolManager.getInstance().scheduleGeneral(new TeleportTask(player, L2JailZone.getLocationOut()), 2000); + ThreadPoolManager.schedule(new TeleportTask(player, L2JailZone.getLocationOut()), 2000); // Open a Html message to inform the player final NpcHtmlMessage msg = new NpcHtmlMessage(); diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/telnethandlers/DebugHandler.java b/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/telnethandlers/DebugHandler.java index d12811e605..00022d549c 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/telnethandlers/DebugHandler.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/telnethandlers/DebugHandler.java @@ -109,54 +109,6 @@ public class DebugHandler implements ITelnetHandler targetPlayer.sendPacket(sp); _print.println("Packet sent to player " + charName); } - else if (dbg.equals("PacketTP")) - { - final String str = ThreadPoolManager.getInstance().getPacketStats(); - _print.println(str); - int i = 0; - File f = new File("./log/StackTrace-PacketTP-" + i + ".txt"); - while (f.exists()) - { - i++; - f = new File("./log/StackTrace-PacketTP-" + i + ".txt"); - } - f.getParentFile().mkdirs(); - fos = new FileOutputStream(f); - out = new OutputStreamWriter(fos, "UTF-8"); - out.write(str); - } - else if (dbg.equals("IOPacketTP")) - { - final String str = ThreadPoolManager.getInstance().getIOPacketStats(); - _print.println(str); - int i = 0; - File f = new File("./log/StackTrace-IOPacketTP-" + i + ".txt"); - while (f.exists()) - { - i++; - f = new File("./log/StackTrace-IOPacketTP-" + i + ".txt"); - } - f.getParentFile().mkdirs(); - fos = new FileOutputStream(f); - out = new OutputStreamWriter(fos, "UTF-8"); - out.write(str); - } - else if (dbg.equals("GeneralTP")) - { - final String str = ThreadPoolManager.getInstance().getGeneralStats(); - _print.println(str); - int i = 0; - File f = new File("./log/StackTrace-GeneralTP-" + i + ".txt"); - while (f.exists()) - { - i++; - f = new File("./log/StackTrace-GeneralTP-" + i + ".txt"); - } - f.getParentFile().mkdirs(); - fos = new FileOutputStream(f); - out = new OutputStreamWriter(fos, "UTF-8"); - out.write(str); - } else if (dbg.equals("full")) { final Calendar cal = Calendar.getInstance(); @@ -248,7 +200,7 @@ public class DebugHandler implements ITelnetHandler } sb.append("\n\n## Thread Pool Manager Statistics ##\n"); - for (String line : ThreadPoolManager.getInstance().getStats()) + for (String line : ThreadPoolManager.getStats()) { sb.append(line); sb.append('\n'); diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/telnethandlers/ThreadHandler.java b/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/telnethandlers/ThreadHandler.java index 8177c8fc1c..c1e1fdeee4 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/telnethandlers/ThreadHandler.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/telnethandlers/ThreadHandler.java @@ -38,7 +38,7 @@ public class ThreadHandler implements ITelnetHandler { if (command.equals("performance")) { - for (String line : ThreadPoolManager.getInstance().getStats()) + for (String line : ThreadPoolManager.getStats()) { _print.println(line); } @@ -46,10 +46,10 @@ public class ThreadHandler implements ITelnetHandler } else if (command.equals("purge")) { - ThreadPoolManager.getInstance().purge(); + ThreadPoolManager.purge(); _print.println("STATUS OF THREAD POOLS AFTER PURGE COMMAND:"); _print.println(""); - for (String line : ThreadPoolManager.getInstance().getStats()) + for (String line : ThreadPoolManager.getStats()) { _print.println(line); } diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/usercommandhandlers/Unstuck.java b/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/usercommandhandlers/Unstuck.java index 5712008c00..efe8144536 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/usercommandhandlers/Unstuck.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/usercommandhandlers/Unstuck.java @@ -111,7 +111,7 @@ public class Unstuck implements IUserCommandHandler // End SoE Animation section // continue execution later - activeChar.setSkillCast(ThreadPoolManager.getInstance().scheduleGeneral(new EscapeFinalizer(activeChar), unstuckTimer)); + activeChar.setSkillCast(ThreadPoolManager.schedule(new EscapeFinalizer(activeChar), unstuckTimer)); return true; } diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/voicedcommandhandlers/Wedding.java b/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/voicedcommandhandlers/Wedding.java index 0dc71f3e11..8b054d83a0 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/voicedcommandhandlers/Wedding.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/handlers/voicedcommandhandlers/Wedding.java @@ -472,7 +472,7 @@ public class Wedding implements IVoicedCommandHandler final EscapeFinalizer ef = new EscapeFinalizer(activeChar, partner.getLocation(), partner.isIn7sDungeon()); // continue execution later - activeChar.setSkillCast(ThreadPoolManager.getInstance().scheduleGeneral(ef, teleportTimer)); + activeChar.setSkillCast(ThreadPoolManager.schedule(ef, teleportTimer)); activeChar.forceIsCasting(GameTimeController.getInstance().getGameTicks() + (teleportTimer / GameTimeController.MILLIS_IN_TICK)); return true; diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/hellbound/AI/Chimeras.java b/L2J_Mobius_HighFive/dist/game/data/scripts/hellbound/AI/Chimeras.java index 459dff2dad..e1ec5a5513 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/hellbound/AI/Chimeras.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/hellbound/AI/Chimeras.java @@ -76,7 +76,7 @@ public final class Chimeras extends AbstractNpcAI if (!npc.isInsideRadius(loc, 200, false, false)) { npc.getSpawn().setLocation(loc); - ThreadPoolManager.getInstance().scheduleGeneral(new Teleport(npc, loc), 100); + ThreadPoolManager.schedule(new Teleport(npc, loc), 100); } } return super.onSpawn(npc); diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/TowerOfNaia.java b/L2J_Mobius_HighFive/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/TowerOfNaia.java index 3c959344e3..1664731238 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/TowerOfNaia.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/TowerOfNaia.java @@ -557,7 +557,7 @@ public final class TowerOfNaia extends AbstractNpcAI { removeForeigners(npcId, party); startRoom(npcId); - ThreadPoolManager.getInstance().scheduleGeneral(new StopRoomTask(npcId), 300000); + ThreadPoolManager.schedule(new StopRoomTask(npcId), 300000); } else { @@ -847,7 +847,7 @@ public final class TowerOfNaia extends AbstractNpcAI } else { - ThreadPoolManager.getInstance().scheduleGeneral(() -> addSpawn(MUTATED_ELPY, -45474, 247450, -13994, 49152, false, 0, false), respawnTime - System.currentTimeMillis()); + ThreadPoolManager.schedule(() -> addSpawn(MUTATED_ELPY, -45474, 247450, -13994, 49152, false, 0, false), respawnTime - System.currentTimeMillis()); } } diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/TullyWorkshop.java b/L2J_Mobius_HighFive/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/TullyWorkshop.java index 8a48fc0bad..09b5534402 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/TullyWorkshop.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/TullyWorkshop.java @@ -1207,7 +1207,7 @@ public final class TullyWorkshop extends AbstractNpcAI DoorData.getInstance().getDoor(19260052).openMe(); countdownTime = 600000; - _countdown = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(() -> + _countdown = ThreadPoolManager.scheduleAtFixedRate(() -> { countdownTime -= 10000; L2Npc _npc = null; @@ -1570,20 +1570,20 @@ public final class TullyWorkshop extends AbstractNpcAI { DoorData.getInstance().getDoor(20250005).openMe(); DoorData.getInstance().getDoor(20250004).openMe(); - ThreadPoolManager.getInstance().scheduleGeneral(new DoorTask(new int[] + ThreadPoolManager.schedule(new DoorTask(new int[] { 20250006, 20250007 }, STATE_OPEN), 2000); - ThreadPoolManager.getInstance().scheduleGeneral(new DoorTask(new int[] + ThreadPoolManager.schedule(new DoorTask(new int[] { 20250778 }, STATE_CLOSE), 3000); - ThreadPoolManager.getInstance().scheduleGeneral(new DoorTask(new int[] + ThreadPoolManager.schedule(new DoorTask(new int[] { 20250777 }, STATE_CLOSE), 6000); - ThreadPoolManager.getInstance().scheduleGeneral(new DoorTask(new int[] + ThreadPoolManager.schedule(new DoorTask(new int[] { 20250009, 20250008 @@ -1594,12 +1594,12 @@ public final class TullyWorkshop extends AbstractNpcAI { DoorData.getInstance().getDoor(20250009).closeMe(); DoorData.getInstance().getDoor(20250008).closeMe(); - ThreadPoolManager.getInstance().scheduleGeneral(new DoorTask(new int[] + ThreadPoolManager.schedule(new DoorTask(new int[] { 20250777, 20250778 }, STATE_OPEN), 1000); - ThreadPoolManager.getInstance().scheduleGeneral(new DoorTask(new int[] + ThreadPoolManager.schedule(new DoorTask(new int[] { 20250005, 20250004, diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/hellbound/Instances/UrbanArea/UrbanArea.java b/L2J_Mobius_HighFive/dist/game/data/scripts/hellbound/Instances/UrbanArea/UrbanArea.java index 5a1022b223..6756b28a79 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/hellbound/Instances/UrbanArea/UrbanArea.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/hellbound/Instances/UrbanArea/UrbanArea.java @@ -167,7 +167,7 @@ public final class UrbanArea extends AbstractInstance final Instance inst = InstanceManager.getInstance().getInstance(world.getInstanceId()); inst.setDuration(5 * 60000); inst.setEmptyDestroyTime(0); - ThreadPoolManager.getInstance().scheduleGeneral(new ExitInstance(party, world), 285000); + ThreadPoolManager.schedule(new ExitInstance(party, world), 285000); htmltext = "32343-02d.htm"; } } @@ -221,7 +221,7 @@ public final class UrbanArea extends AbstractInstance world.activeAmaskariCall.cancel(true); } - world.activeAmaskariCall = ThreadPoolManager.getInstance().scheduleGeneral(new CallAmaskari(npc), 25000); + world.activeAmaskariCall = ThreadPoolManager.schedule(new CallAmaskari(npc), 25000); } } } @@ -267,7 +267,7 @@ public final class UrbanArea extends AbstractInstance { world.activeAmaskariCall.cancel(true); } - world.activeAmaskariCall = ThreadPoolManager.getInstance().scheduleGeneral(new CallAmaskari(npc), 25000); + world.activeAmaskariCall = ThreadPoolManager.schedule(new CallAmaskari(npc), 25000); } } } @@ -313,7 +313,7 @@ public final class UrbanArea extends AbstractInstance { world.activeAmaskariCall.cancel(true); } - world.activeAmaskariCall = ThreadPoolManager.getInstance().scheduleGeneral(new CallAmaskari(npc), 25000); + world.activeAmaskariCall = ThreadPoolManager.schedule(new CallAmaskari(npc), 25000); } } } diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/instances/ChambersOfDelusion/Chamber.java b/L2J_Mobius_HighFive/dist/game/data/scripts/instances/ChambersOfDelusion/Chamber.java index 396accab2b..9a30904360 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/instances/ChambersOfDelusion/Chamber.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/instances/ChambersOfDelusion/Chamber.java @@ -62,7 +62,7 @@ public abstract class Chamber extends AbstractInstance { currentRoom = 0; partyInside = party; - _banishTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new BanishTask(), 60000, 60000); + _banishTask = ThreadPoolManager.scheduleAtFixedRate(new BanishTask(), 60000, 60000); } protected L2Party getPartyInside() @@ -78,7 +78,7 @@ public abstract class Chamber extends AbstractInstance // Schedule next room change only if remaining time is enough if ((inst.getInstanceEndTime() - System.currentTimeMillis()) > nextInterval) { - _roomChangeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ChangeRoomTask(), nextInterval - 5000); + _roomChangeTask = ThreadPoolManager.schedule(new ChangeRoomTask(), nextInterval - 5000); } } diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/instances/FinalEmperialTomb/FinalEmperialTomb.java b/L2J_Mobius_HighFive/dist/game/data/scripts/instances/FinalEmperialTomb/FinalEmperialTomb.java index a207d0e36a..95d902425f 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/instances/FinalEmperialTomb/FinalEmperialTomb.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/instances/FinalEmperialTomb/FinalEmperialTomb.java @@ -619,7 +619,7 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea { openDoor(doorId, world.getInstanceId()); } - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(world, 0), 600000); + ThreadPoolManager.schedule(new IntroTask(world, 0), 600000); break; case 3: // first morph if (world.songEffectTask != null) @@ -634,7 +634,7 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea } handleReenterTime(world); world.activeScarlet.doCast(FIRST_MORPH_SKILL.getSkill()); - ThreadPoolManager.getInstance().scheduleGeneral(new SongTask(world, 2), 1500); + ThreadPoolManager.schedule(new SongTask(world, 2), 1500); break; case 4: // second morph world.isVideo = true; @@ -644,8 +644,8 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea world.songEffectTask.cancel(false); } world.songEffectTask = null; - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(world, 23), 2000); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(world, 24), 2100); + ThreadPoolManager.schedule(new IntroTask(world, 23), 2000); + ThreadPoolManager.schedule(new IntroTask(world, 24), 2100); break; case 5: // raid success world.isVideo = true; @@ -660,7 +660,7 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea } world.songTask = null; world.songEffectTask = null; - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(world, 33), 500); + ThreadPoolManager.schedule(new IntroTask(world, 33), 500); break; case 6: // open doors InstanceManager.getInstance().getInstance(world.getInstanceId()).setDuration(300000); @@ -745,7 +745,7 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea updateKnownList(_world, demon); _world.demons.add(demon); } - ThreadPoolManager.getInstance().scheduleGeneral(new DemonSpawnTask(_world), TIME_BETWEEN_DEMON_SPAWNS); + ThreadPoolManager.schedule(new DemonSpawnTask(_world), TIME_BETWEEN_DEMON_SPAWNS); } } @@ -788,7 +788,7 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea case 0: // new song play if (_world.isVideo) { - _world.songTask = ThreadPoolManager.getInstance().scheduleGeneral(new SongTask(_world, 0), 1000); + _world.songTask = ThreadPoolManager.schedule(new SongTask(_world, 0), 1000); } else if ((_world.frintezza != null) && !_world.frintezza.isDead()) { @@ -802,15 +802,15 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea _world.OnSong = element; broadCastPacket(_world, new ExShowScreenMessage(2, -1, 2, 0, 0, 0, 0, true, 4000, false, null, element.songName, null)); broadCastPacket(_world, new MagicSkillUse(_world.frintezza, _world.frintezza, element.skill.getSkillId(), element.skill.getSkillLvl(), element.skill.getSkill().getHitTime(), 0)); - _world.songEffectTask = ThreadPoolManager.getInstance().scheduleGeneral(new SongTask(_world, 1), element.skill.getSkill().getHitTime() - 10000); - _world.songTask = ThreadPoolManager.getInstance().scheduleGeneral(new SongTask(_world, 0), element.skill.getSkill().getHitTime()); + _world.songEffectTask = ThreadPoolManager.schedule(new SongTask(_world, 1), element.skill.getSkill().getHitTime() - 10000); + _world.songTask = ThreadPoolManager.schedule(new SongTask(_world, 0), element.skill.getSkill().getHitTime()); break; } } } else { - ThreadPoolManager.getInstance().scheduleGeneral(new SoulBreakingArrow(_world.frintezza), 35000); + ThreadPoolManager.schedule(new SoulBreakingArrow(_world.frintezza), 35000); } } break; @@ -878,8 +878,8 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea switch (_status) { case 0: - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 1), 27000); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 2), 30000); + ThreadPoolManager.schedule(new IntroTask(_world, 1), 27000); + ThreadPoolManager.schedule(new IntroTask(_world, 2), 30000); broadCastPacket(_world, new Earthquake(-87784, -155083, -9087, 45, 27)); break; case 1: @@ -924,7 +924,7 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea _world.scarletDummy.setIsImmobilized(true); stopPc(); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 3), 1000); + ThreadPoolManager.schedule(new IntroTask(_world, 3), 1000); break; case 3: broadCastPacket(_world, new SpecialCamera(_world.overheadDummy, 0, 75, -89, 0, 100, 0, 0, 1, 0, 0)); @@ -945,41 +945,41 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea updateKnownList(_world, demon); _world.demons.add(demon); } - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 4), 6500); + ThreadPoolManager.schedule(new IntroTask(_world, 4), 6500); break; case 4: broadCastPacket(_world, new SpecialCamera(_world.frintezzaDummy, 1800, 90, 8, 6500, 7000, 0, 0, 1, 0, 0)); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 5), 900); + ThreadPoolManager.schedule(new IntroTask(_world, 5), 900); break; case 5: broadCastPacket(_world, new SpecialCamera(_world.frintezzaDummy, 140, 90, 10, 2500, 4500, 0, 0, 1, 0, 0)); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 6), 4000); + ThreadPoolManager.schedule(new IntroTask(_world, 6), 4000); break; case 6: broadCastPacket(_world, new SpecialCamera(_world.frintezza, 40, 75, -10, 0, 1000, 0, 0, 1, 0, 0)); broadCastPacket(_world, new SpecialCamera(_world.frintezza, 40, 75, -10, 0, 12000, 0, 0, 1, 0, 0)); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 7), 1350); + ThreadPoolManager.schedule(new IntroTask(_world, 7), 1350); break; case 7: broadCastPacket(_world, new SocialAction(_world.frintezza.getObjectId(), 2)); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 8), 7000); + ThreadPoolManager.schedule(new IntroTask(_world, 8), 7000); break; case 8: _world.frintezzaDummy.deleteMe(); _world.frintezzaDummy = null; - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 9), 1000); + ThreadPoolManager.schedule(new IntroTask(_world, 9), 1000); break; case 9: broadCastPacket(_world, new SocialAction(_world.demons.get(1).getObjectId(), 1)); broadCastPacket(_world, new SocialAction(_world.demons.get(2).getObjectId(), 1)); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 10), 400); + ThreadPoolManager.schedule(new IntroTask(_world, 10), 400); break; case 10: broadCastPacket(_world, new SocialAction(_world.demons.get(0).getObjectId(), 1)); broadCastPacket(_world, new SocialAction(_world.demons.get(3).getObjectId(), 1)); sendPacketX(new SpecialCamera(_world.portraitDummy1, 1000, 118, 0, 0, 1000, 0, 0, 1, 0, 0), new SpecialCamera(_world.portraitDummy3, 1000, 62, 0, 0, 1000, 0, 0, 1, 0, 0), -87784); sendPacketX(new SpecialCamera(_world.portraitDummy1, 1000, 118, 0, 0, 10000, 0, 0, 1, 0, 0), new SpecialCamera(_world.portraitDummy3, 1000, 62, 0, 0, 10000, 0, 0, 1, 0, 0), -87784); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 11), 2000); + ThreadPoolManager.schedule(new IntroTask(_world, 11), 2000); break; case 11: broadCastPacket(_world, new SpecialCamera(_world.frintezza, 240, 90, 0, 0, 1000, 0, 0, 1, 0, 0)); @@ -989,36 +989,36 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea _world.portraitDummy3.deleteMe(); _world.portraitDummy1 = null; _world.portraitDummy3 = null; - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 12), 4500); + ThreadPoolManager.schedule(new IntroTask(_world, 12), 4500); break; case 12: broadCastPacket(_world, new SpecialCamera(_world.frintezza, 100, 195, 35, 0, 10000, 0, 0, 1, 0, 0)); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 13), 700); + ThreadPoolManager.schedule(new IntroTask(_world, 13), 700); break; case 13: broadCastPacket(_world, new SpecialCamera(_world.frintezza, 100, 195, 35, 0, 10000, 0, 0, 1, 0, 0)); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 14), 1300); + ThreadPoolManager.schedule(new IntroTask(_world, 14), 1300); break; case 14: broadCastPacket(_world, new ExShowScreenMessage(NpcStringId.MOURNFUL_CHORALE_PRELUDE, 2, 5000)); broadCastPacket(_world, new SpecialCamera(_world.frintezza, 120, 180, 45, 1500, 10000, 0, 0, 1, 0, 0)); broadCastPacket(_world, new MagicSkillUse(_world.frintezza, _world.frintezza, 5006, 1, 34000, 0)); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 15), 1500); + ThreadPoolManager.schedule(new IntroTask(_world, 15), 1500); break; case 15: broadCastPacket(_world, new SpecialCamera(_world.frintezza, 520, 135, 45, 8000, 10000, 0, 0, 1, 0, 0)); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 16), 7500); + ThreadPoolManager.schedule(new IntroTask(_world, 16), 7500); break; case 16: broadCastPacket(_world, new SpecialCamera(_world.frintezza, 1500, 110, 25, 10000, 13000, 0, 0, 1, 0, 0)); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 17), 9500); + ThreadPoolManager.schedule(new IntroTask(_world, 17), 9500); break; case 17: broadCastPacket(_world, new SpecialCamera(_world.overheadDummy, 930, 160, -20, 0, 1000, 0, 0, 1, 0, 0)); broadCastPacket(_world, new SpecialCamera(_world.overheadDummy, 600, 180, -25, 0, 10000, 0, 0, 1, 0, 0)); broadCastPacket(_world, new MagicSkillUse(_world.scarletDummy, _world.overheadDummy, 5004, 1, 5800, 0)); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 18), 5000); + ThreadPoolManager.schedule(new IntroTask(_world, 18), 5000); break; case 18: _world.activeScarlet = (L2GrandBossInstance) addSpawn(29046, -87789, -153295, -9176, 16384, false, 0, false, _world.getInstanceId()); @@ -1029,16 +1029,16 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea updateKnownList(_world, _world.activeScarlet); broadCastPacket(_world, new SocialAction(_world.activeScarlet.getObjectId(), 3)); broadCastPacket(_world, new SpecialCamera(_world.scarletDummy, 800, 180, 10, 1000, 10000, 0, 0, 1, 0, 0)); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 19), 2100); + ThreadPoolManager.schedule(new IntroTask(_world, 19), 2100); break; case 19: broadCastPacket(_world, new SpecialCamera(_world.activeScarlet, 300, 60, 8, 0, 10000, 0, 0, 1, 0, 0)); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 20), 2000); + ThreadPoolManager.schedule(new IntroTask(_world, 20), 2000); break; case 20: broadCastPacket(_world, new SpecialCamera(_world.activeScarlet, 500, 90, 10, 3000, 5000, 0, 0, 1, 0, 0)); - _world.songTask = ThreadPoolManager.getInstance().scheduleGeneral(new SongTask(_world, 0), 100); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 21), 3000); + _world.songTask = ThreadPoolManager.schedule(new SongTask(_world, 0), 100); + ThreadPoolManager.schedule(new IntroTask(_world, 21), 3000); break; case 21: for (int i = 0; i < PORTRAIT_SPAWNS.length; i++) @@ -1053,7 +1053,7 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea _world.overheadDummy = null; _world.scarletDummy = null; - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 22), 2000); + ThreadPoolManager.schedule(new IntroTask(_world, 22), 2000); break; case 22: for (L2MonsterInstance demon : _world.demons) @@ -1071,7 +1071,7 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea _world.frintezza.setIsMortal(false); startPc(); - ThreadPoolManager.getInstance().scheduleGeneral(new DemonSpawnTask(_world), TIME_BETWEEN_DEMON_SPAWNS); + ThreadPoolManager.schedule(new DemonSpawnTask(_world), TIME_BETWEEN_DEMON_SPAWNS); break; case 23: broadCastPacket(_world, new SocialAction(_world.frintezza.getObjectId(), 4)); @@ -1085,16 +1085,16 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea _world.activeScarlet.setIsInvul(true); _world.activeScarlet.setIsImmobilized(true); _world.activeScarlet.disableAllSkills(); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 25), 7000); + ThreadPoolManager.schedule(new IntroTask(_world, 25), 7000); break; case 25: broadCastPacket(_world, new MagicSkillUse(_world.frintezza, _world.frintezza, 5006, 1, 34000, 0)); broadCastPacket(_world, new SpecialCamera(_world.frintezza, 500, 70, 15, 3000, 10000, 0, 0, 1, 0, 0)); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 26), 3000); + ThreadPoolManager.schedule(new IntroTask(_world, 26), 3000); break; case 26: broadCastPacket(_world, new SpecialCamera(_world.frintezza, 2500, 90, 12, 6000, 10000, 0, 0, 1, 0, 0)); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 27), 3000); + ThreadPoolManager.schedule(new IntroTask(_world, 27), 3000); break; case 27: _world.scarlet_x = _world.activeScarlet.getX(); @@ -1111,13 +1111,13 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea } broadCastPacket(_world, new SpecialCamera(_world.activeScarlet, 250, _world.scarlet_a, 12, 0, 1000, 0, 0, 1, 0, 0)); broadCastPacket(_world, new SpecialCamera(_world.activeScarlet, 250, _world.scarlet_a, 12, 0, 10000, 0, 0, 1, 0, 0)); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 28), 500); + ThreadPoolManager.schedule(new IntroTask(_world, 28), 500); break; case 28: _world.activeScarlet.doDie(_world.activeScarlet); broadCastPacket(_world, new SpecialCamera(_world.activeScarlet, 450, _world.scarlet_a, 14, 8000, 8000, 0, 0, 1, 0, 0)); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 29), 6250); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 30), 7200); + ThreadPoolManager.schedule(new IntroTask(_world, 29), 6250); + ThreadPoolManager.schedule(new IntroTask(_world, 30), 7200); break; case 29: _world.activeScarlet.deleteMe(); @@ -1132,11 +1132,11 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea broadCastPacket(_world, new SpecialCamera(_world.activeScarlet, 450, _world.scarlet_a, 12, 500, 14000, 0, 0, 1, 0, 0)); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 31), 8100); + ThreadPoolManager.schedule(new IntroTask(_world, 31), 8100); break; case 31: broadCastPacket(_world, new SocialAction(_world.activeScarlet.getObjectId(), 2)); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 32), 9000); + ThreadPoolManager.schedule(new IntroTask(_world, 32), 9000); break; case 32: startPc(); @@ -1148,8 +1148,8 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea case 33: broadCastPacket(_world, new SpecialCamera(_world.activeScarlet, 300, _world.scarlet_a - 180, 5, 0, 7000, 0, 0, 1, 0, 0)); broadCastPacket(_world, new SpecialCamera(_world.activeScarlet, 200, _world.scarlet_a, 85, 4000, 10000, 0, 0, 1, 0, 0)); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 34), 7400); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 35), 7500); + ThreadPoolManager.schedule(new IntroTask(_world, 34), 7400); + ThreadPoolManager.schedule(new IntroTask(_world, 35), 7500); break; case 34: _world.frintezza.doDie(_world.frintezza); @@ -1157,11 +1157,11 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea case 35: broadCastPacket(_world, new SpecialCamera(_world.frintezza, 100, 120, 5, 0, 7000, 0, 0, 1, 0, 0)); broadCastPacket(_world, new SpecialCamera(_world.frintezza, 100, 90, 5, 5000, 15000, 0, 0, 1, 0, 0)); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 36), 7000); + ThreadPoolManager.schedule(new IntroTask(_world, 36), 7000); break; case 36: broadCastPacket(_world, new SpecialCamera(_world.frintezza, 900, 90, 25, 7000, 10000, 0, 0, 1, 0, 0)); - ThreadPoolManager.getInstance().scheduleGeneral(new IntroTask(_world, 37), 9000); + ThreadPoolManager.schedule(new IntroTask(_world, 37), 9000); break; case 37: controlStatus(_world); @@ -1243,7 +1243,7 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea switch (_status) { case 0: - ThreadPoolManager.getInstance().scheduleGeneral(new StatusTask(_world, 1), 2000); + ThreadPoolManager.schedule(new StatusTask(_world, 1), 2000); for (int doorId : FIRST_ROOM_DOORS) { openDoor(doorId, _world.getInstanceId()); @@ -1253,7 +1253,7 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea addAggroToMobs(); break; case 2: - ThreadPoolManager.getInstance().scheduleGeneral(new StatusTask(_world, 3), 100); + ThreadPoolManager.schedule(new StatusTask(_world, 3), 100); for (int doorId : SECOND_ROOM_DOORS) { openDoor(doorId, _world.getInstanceId()); @@ -1386,7 +1386,7 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea final FETWorld world = (FETWorld) tmpworld; if (npc.getId() == HALL_ALARM) { - ThreadPoolManager.getInstance().scheduleGeneral(new StatusTask(world, 0), 2000); + ThreadPoolManager.schedule(new StatusTask(world, 0), 2000); if (debug) { _log.info("[Final Emperial Tomb] Hall alarm is disabled, doors will open!"); @@ -1397,7 +1397,7 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea world.darkChoirPlayerCount--; if (world.darkChoirPlayerCount < 1) { - ThreadPoolManager.getInstance().scheduleGeneral(new StatusTask(world, 2), 2000); + ThreadPoolManager.schedule(new StatusTask(world, 2), 2000); if (debug) { _log.info("[Final Emperial Tomb] All Dark Choir Players are killed, doors will open!"); diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/quests/Q00511_AwlUnderFoot/Q00511_AwlUnderFoot.java b/L2J_Mobius_HighFive/dist/game/data/scripts/quests/Q00511_AwlUnderFoot/Q00511_AwlUnderFoot.java index 6fbe307faf..218fc85065 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/quests/Q00511_AwlUnderFoot/Q00511_AwlUnderFoot.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/quests/Q00511_AwlUnderFoot/Q00511_AwlUnderFoot.java @@ -296,7 +296,7 @@ public final class Q00511_AwlUnderFoot extends Quest dungeon.setReEnterTime(System.currentTimeMillis() + REENTERTIME); InstanceManager.getInstance().addWorld(world); _log.info("Fortress AwlUnderFoot started " + template + " Instance: " + instanceId + " created by player: " + player.getName()); - ThreadPoolManager.getInstance().scheduleGeneral(new spawnRaid((FAUWorld) world), RAID_SPAWN_DELAY); + ThreadPoolManager.schedule(new spawnRaid((FAUWorld) world), RAID_SPAWN_DELAY); // teleport players if (player.getParty() == null) @@ -398,7 +398,7 @@ public final class Q00511_AwlUnderFoot extends Quest else { world.incStatus(); - ThreadPoolManager.getInstance().scheduleGeneral(new spawnRaid(world), RAID_SPAWN_DELAY); + ThreadPoolManager.schedule(new spawnRaid(world), RAID_SPAWN_DELAY); } } return null; diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/quests/Q00726_LightWithinTheDarkness/Q00726_LightWithinTheDarkness.java b/L2J_Mobius_HighFive/dist/game/data/scripts/quests/Q00726_LightWithinTheDarkness/Q00726_LightWithinTheDarkness.java index f506a02434..68dd8052ba 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/quests/Q00726_LightWithinTheDarkness/Q00726_LightWithinTheDarkness.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/quests/Q00726_LightWithinTheDarkness/Q00726_LightWithinTheDarkness.java @@ -286,7 +286,7 @@ public class Q00726_LightWithinTheDarkness extends Quest world.setStatus(0); dungeon.setReEnterTime(System.currentTimeMillis() + 14400000); InstanceManager.getInstance().addWorld(world); - ThreadPoolManager.getInstance().scheduleGeneral(new spawnNpcs((PAWORLD) world), 10000); + ThreadPoolManager.schedule(new spawnNpcs((PAWORLD) world), 10000); for (L2PcInstance partyMember : party.getMembers()) { @@ -397,7 +397,7 @@ public class Q00726_LightWithinTheDarkness extends Quest protected void FirstWave(PAWORLD world) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { addSpawn(SEDUCED_KNIGHT, 49384, -12232, -9384, 0, false, 0, false, world.getInstanceId()); addSpawn(SEDUCED_RANGER, 49192, -12232, -9384, 0, false, 0, false, world.getInstanceId()); @@ -409,7 +409,7 @@ public class Q00726_LightWithinTheDarkness extends Quest { addSpawn(KANADIS_FOLLOWER1, 50536, -12232, -9384, 32768, false, 0, false, world.getInstanceId()); } - ThreadPoolManager.getInstance().scheduleGeneral(() -> SecondWave(world), 8 * 60 * 1000); + ThreadPoolManager.schedule(() -> SecondWave(world), 8 * 60 * 1000); }, 10000); } @@ -421,7 +421,7 @@ public class Q00726_LightWithinTheDarkness extends Quest { addSpawn(KANADIS_FOLLOWER2, 50536, -12232, -9384, 32768, false, 0, false, world.getInstanceId()); } - ThreadPoolManager.getInstance().scheduleGeneral(() -> ThirdWave(world), 8 * 60 * 1000); + ThreadPoolManager.schedule(() -> ThirdWave(world), 8 * 60 * 1000); } protected void ThirdWave(PAWORLD world) diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/quests/Q00727_HopeWithinTheDarkness/Q00727_HopeWithinTheDarkness.java b/L2J_Mobius_HighFive/dist/game/data/scripts/quests/Q00727_HopeWithinTheDarkness/Q00727_HopeWithinTheDarkness.java index e18282b1cf..59cdcf41e4 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/quests/Q00727_HopeWithinTheDarkness/Q00727_HopeWithinTheDarkness.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/quests/Q00727_HopeWithinTheDarkness/Q00727_HopeWithinTheDarkness.java @@ -477,7 +477,7 @@ public class Q00727_HopeWithinTheDarkness extends Quest // Destroy instance after 5 minutes inst.setDuration(5 * 60000); inst.setEmptyDestroyTime(0); - ThreadPoolManager.getInstance().scheduleGeneral(new completeDungeon(world, player), 1500); + ThreadPoolManager.schedule(new completeDungeon(world, player), 1500); } } } @@ -634,7 +634,7 @@ public class Q00727_HopeWithinTheDarkness extends Quest world.setStatus(0); dungeon.setReEnterTime(System.currentTimeMillis() + REENTER_INTERVAL); InstanceManager.getInstance().addWorld(world); - ThreadPoolManager.getInstance().scheduleGeneral(new spawnNpcs((CAUWorld) world), INITIAL_SPAWN_DELAY); + ThreadPoolManager.schedule(new spawnNpcs((CAUWorld) world), INITIAL_SPAWN_DELAY); if (DEBUG) { _log.info("Castle HopeWithinTheDarkness started " + template + " Instance: " + instanceId + " created by player: " + player.getName()); @@ -681,21 +681,21 @@ public class Q00727_HopeWithinTheDarkness extends Quest _instance.spawnGroup("victims"); _instance.spawnGroup("bosses_1"); - ThreadPoolManager.getInstance().scheduleGeneral(new spawnNpcs(_world), WAVE_SPAWN_DELAY); - ThreadPoolManager.getInstance().scheduleGeneral(new spawnPrivates(_world), PRIVATE_SPAWN_DELAY); + ThreadPoolManager.schedule(new spawnNpcs(_world), WAVE_SPAWN_DELAY); + ThreadPoolManager.schedule(new spawnPrivates(_world), PRIVATE_SPAWN_DELAY); } else if (_world.getStatus() == 1) { _instance.spawnGroup("bosses_2"); - ThreadPoolManager.getInstance().scheduleGeneral(new spawnNpcs(_world), WAVE_SPAWN_DELAY); - ThreadPoolManager.getInstance().scheduleGeneral(new spawnPrivates(_world), PRIVATE_SPAWN_DELAY); + ThreadPoolManager.schedule(new spawnNpcs(_world), WAVE_SPAWN_DELAY); + ThreadPoolManager.schedule(new spawnPrivates(_world), PRIVATE_SPAWN_DELAY); } else if (_world.getStatus() == 2) { _instance.spawnGroup("bosses_3"); - ThreadPoolManager.getInstance().scheduleGeneral(new spawnPrivates(_world), PRIVATE_SPAWN_DELAY); + ThreadPoolManager.schedule(new spawnPrivates(_world), PRIVATE_SPAWN_DELAY); } } catch (Exception e) diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/quests/Q10292_SevenSignsGirlOfDoubt/Q10292_SevenSignsGirlOfDoubt.java b/L2J_Mobius_HighFive/dist/game/data/scripts/quests/Q10292_SevenSignsGirlOfDoubt/Q10292_SevenSignsGirlOfDoubt.java index c9b1d96a47..393a18102e 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/quests/Q10292_SevenSignsGirlOfDoubt/Q10292_SevenSignsGirlOfDoubt.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/quests/Q10292_SevenSignsGirlOfDoubt/Q10292_SevenSignsGirlOfDoubt.java @@ -166,7 +166,7 @@ public final class Q10292_SevenSignsGirlOfDoubt extends Quest creature1.setIsNoRndWalk(true); final L2Npc creature2 = addSpawn(CREATURE_OF_THE_DUSK2, 89524, -238131, -9632, 56, false, 0, false, player.getInstanceId()); creature2.setIsNoRndWalk(true); - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { creature1.deleteMe(); creature2.deleteMe(); diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/vehicles/BoatGiranTalking.java b/L2J_Mobius_HighFive/dist/game/data/scripts/vehicles/BoatGiranTalking.java index 339c478389..f61a6a350d 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/vehicles/BoatGiranTalking.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/vehicles/BoatGiranTalking.java @@ -161,30 +161,30 @@ public class BoatGiranTalking implements Runnable { case 0: BoatManager.getInstance().broadcastPacket(GIRAN_DOCK, TALKING_DOCK[0], LEAVE_GIRAN5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 1: BoatManager.getInstance().broadcastPacket(GIRAN_DOCK, TALKING_DOCK[0], LEAVE_GIRAN1); - ThreadPoolManager.getInstance().scheduleGeneral(this, 40000); + ThreadPoolManager.schedule(this, 40000); break; case 2: BoatManager.getInstance().broadcastPacket(GIRAN_DOCK, TALKING_DOCK[0], LEAVE_GIRAN0); - ThreadPoolManager.getInstance().scheduleGeneral(this, 20000); + ThreadPoolManager.schedule(this, 20000); break; case 3: BoatManager.getInstance().broadcastPackets(GIRAN_DOCK, TALKING_DOCK[0], LEAVING_GIRAN, ARRIVAL_TALKING15); _boat.broadcastPacket(GIRAN_SOUND); _boat.payForRide(3946, 1, 46763, 187041, -3451); _boat.executePath(GIRAN_TO_TALKING); - ThreadPoolManager.getInstance().scheduleGeneral(this, 250000); + ThreadPoolManager.schedule(this, 250000); break; case 4: BoatManager.getInstance().broadcastPacket(TALKING_DOCK[0], GIRAN_DOCK, ARRIVAL_TALKING10); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 5: BoatManager.getInstance().broadcastPacket(TALKING_DOCK[0], GIRAN_DOCK, ARRIVAL_TALKING5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 6: BoatManager.getInstance().broadcastPacket(TALKING_DOCK[0], GIRAN_DOCK, ARRIVAL_TALKING1); @@ -203,7 +203,7 @@ public class BoatGiranTalking implements Runnable _shoutCount = 0; } - ThreadPoolManager.getInstance().scheduleGeneral(this, 5000); + ThreadPoolManager.schedule(this, 5000); return; } _boat.executePath(TALKING_DOCK); @@ -212,19 +212,19 @@ public class BoatGiranTalking implements Runnable BoatManager.getInstance().dockShip(BoatManager.TALKING_ISLAND, true); BoatManager.getInstance().broadcastPackets(TALKING_DOCK[0], GIRAN_DOCK, ARRIVED_AT_TALKING, ARRIVED_AT_TALKING_2); _boat.broadcastPacket(TALKING_SOUND); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 9: BoatManager.getInstance().broadcastPacket(TALKING_DOCK[0], GIRAN_DOCK, LEAVE_TALKING5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 10: BoatManager.getInstance().broadcastPacket(TALKING_DOCK[0], GIRAN_DOCK, LEAVE_TALKING1); - ThreadPoolManager.getInstance().scheduleGeneral(this, 40000); + ThreadPoolManager.schedule(this, 40000); break; case 11: BoatManager.getInstance().broadcastPacket(TALKING_DOCK[0], GIRAN_DOCK, LEAVE_TALKING0); - ThreadPoolManager.getInstance().scheduleGeneral(this, 20000); + ThreadPoolManager.schedule(this, 20000); break; case 12: BoatManager.getInstance().dockShip(BoatManager.TALKING_ISLAND, false); @@ -232,23 +232,23 @@ public class BoatGiranTalking implements Runnable _boat.broadcastPacket(TALKING_SOUND); _boat.payForRide(3945, 1, -96777, 258970, -3623); _boat.executePath(TALKING_TO_GIRAN); - ThreadPoolManager.getInstance().scheduleGeneral(this, 200000); + ThreadPoolManager.schedule(this, 200000); break; case 13: BoatManager.getInstance().broadcastPacket(GIRAN_DOCK, TALKING_DOCK[0], ARRIVAL_GIRAN20); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 14: BoatManager.getInstance().broadcastPacket(GIRAN_DOCK, TALKING_DOCK[0], ARRIVAL_GIRAN15); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 15: BoatManager.getInstance().broadcastPacket(GIRAN_DOCK, TALKING_DOCK[0], ARRIVAL_GIRAN10); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 16: BoatManager.getInstance().broadcastPacket(GIRAN_DOCK, TALKING_DOCK[0], ARRIVAL_GIRAN5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 17: BoatManager.getInstance().broadcastPacket(GIRAN_DOCK, TALKING_DOCK[0], ARRIVAL_GIRAN1); @@ -256,7 +256,7 @@ public class BoatGiranTalking implements Runnable case 18: BoatManager.getInstance().broadcastPackets(GIRAN_DOCK, TALKING_DOCK[0], ARRIVED_AT_GIRAN, ARRIVED_AT_GIRAN_2); _boat.broadcastPacket(GIRAN_SOUND); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; } _shoutCount = 0; diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/vehicles/BoatGludinRune.java b/L2J_Mobius_HighFive/dist/game/data/scripts/vehicles/BoatGludinRune.java index bbf962aa4e..83749b931f 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/vehicles/BoatGludinRune.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/vehicles/BoatGludinRune.java @@ -176,15 +176,15 @@ public class BoatGludinRune implements Runnable { case 0: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], LEAVE_GLUDIN5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 1: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], LEAVE_GLUDIN1); - ThreadPoolManager.getInstance().scheduleGeneral(this, 40000); + ThreadPoolManager.schedule(this, 40000); break; case 2: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], LEAVE_GLUDIN0); - ThreadPoolManager.getInstance().scheduleGeneral(this, 20000); + ThreadPoolManager.schedule(this, 20000); break; case 3: BoatManager.getInstance().dockShip(BoatManager.GLUDIN_HARBOR, false); @@ -192,19 +192,19 @@ public class BoatGludinRune implements Runnable _boat.broadcastPacket(GLUDIN_SOUND); _boat.payForRide(7905, 1, -90015, 150422, -3610); _boat.executePath(GLUDIN_TO_RUNE); - ThreadPoolManager.getInstance().scheduleGeneral(this, 250000); + ThreadPoolManager.schedule(this, 250000); break; case 4: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], ARRIVAL_RUNE15); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 5: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], ARRIVAL_RUNE10); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 6: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], ARRIVAL_RUNE5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 7: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], ARRIVAL_RUNE1); @@ -223,7 +223,7 @@ public class BoatGludinRune implements Runnable _shoutCount = 0; } - ThreadPoolManager.getInstance().scheduleGeneral(this, 5000); + ThreadPoolManager.schedule(this, 5000); return; } _boat.executePath(RUNE_DOCK); @@ -232,19 +232,19 @@ public class BoatGludinRune implements Runnable BoatManager.getInstance().dockShip(BoatManager.RUNE_HARBOR, true); BoatManager.getInstance().broadcastPackets(RUNE_DOCK[0], GLUDIN_DOCK[0], ARRIVED_AT_RUNE, ARRIVED_AT_RUNE_2); _boat.broadcastPacket(RUNE_SOUND); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 10: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], LEAVE_RUNE5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 11: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], LEAVE_RUNE1); - ThreadPoolManager.getInstance().scheduleGeneral(this, 40000); + ThreadPoolManager.schedule(this, 40000); break; case 12: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], LEAVE_RUNE0); - ThreadPoolManager.getInstance().scheduleGeneral(this, 20000); + ThreadPoolManager.schedule(this, 20000); break; case 13: BoatManager.getInstance().dockShip(BoatManager.RUNE_HARBOR, false); @@ -252,19 +252,19 @@ public class BoatGludinRune implements Runnable _boat.broadcastPacket(RUNE_SOUND); _boat.payForRide(7904, 1, 34513, -38009, -3640); _boat.executePath(RUNE_TO_GLUDIN); - ThreadPoolManager.getInstance().scheduleGeneral(this, 60000); + ThreadPoolManager.schedule(this, 60000); break; case 14: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], ARRIVAL_GLUDIN15); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 15: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], ARRIVAL_GLUDIN10); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 16: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], ARRIVAL_GLUDIN5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 17: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], ARRIVAL_GLUDIN1); @@ -283,7 +283,7 @@ public class BoatGludinRune implements Runnable _shoutCount = 0; } - ThreadPoolManager.getInstance().scheduleGeneral(this, 5000); + ThreadPoolManager.schedule(this, 5000); return; } _boat.executePath(GLUDIN_DOCK); @@ -292,7 +292,7 @@ public class BoatGludinRune implements Runnable BoatManager.getInstance().dockShip(BoatManager.GLUDIN_HARBOR, true); BoatManager.getInstance().broadcastPackets(GLUDIN_DOCK[0], RUNE_DOCK[0], ARRIVED_AT_GLUDIN, ARRIVED_AT_GLUDIN_2); _boat.broadcastPacket(GLUDIN_SOUND); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; } _shoutCount = 0; diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/vehicles/BoatInnadrilTour.java b/L2J_Mobius_HighFive/dist/game/data/scripts/vehicles/BoatInnadrilTour.java index f502cc8a6b..30d8d48208 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/vehicles/BoatInnadrilTour.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/vehicles/BoatInnadrilTour.java @@ -119,44 +119,44 @@ public class BoatInnadrilTour implements Runnable { case 0: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, LEAVE_INNADRIL5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 1: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, LEAVE_INNADRIL1); - ThreadPoolManager.getInstance().scheduleGeneral(this, 40000); + ThreadPoolManager.schedule(this, 40000); break; case 2: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, LEAVE_INNADRIL0); - ThreadPoolManager.getInstance().scheduleGeneral(this, 20000); + ThreadPoolManager.schedule(this, 20000); break; case 3: BoatManager.getInstance().broadcastPackets(DOCK, DOCK, LEAVING_INNADRIL, INNADRIL_SOUND); _boat.payForRide(0, 1, 107092, 219098, -3952); _boat.executePath(TOUR); - ThreadPoolManager.getInstance().scheduleGeneral(this, 650000); + ThreadPoolManager.schedule(this, 650000); break; case 4: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, ARRIVAL20); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 5: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, ARRIVAL15); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 6: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, ARRIVAL10); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 7: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, ARRIVAL5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 8: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, ARRIVAL1); break; case 9: BoatManager.getInstance().broadcastPackets(DOCK, DOCK, ARRIVED_AT_INNADRIL, INNADRIL_SOUND); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; } _cycle++; diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/vehicles/BoatRunePrimeval.java b/L2J_Mobius_HighFive/dist/game/data/scripts/vehicles/BoatRunePrimeval.java index f2333b3991..acb30efdd8 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/vehicles/BoatRunePrimeval.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/vehicles/BoatRunePrimeval.java @@ -118,7 +118,7 @@ public class BoatRunePrimeval implements Runnable break; case 1: BoatManager.getInstance().broadcastPackets(PRIMEVAL_DOCK, RUNE_DOCK[0], ARRIVED_AT_PRIMEVAL, ARRIVED_AT_PRIMEVAL_2, PRIMEVAL_SOUND); - ThreadPoolManager.getInstance().scheduleGeneral(this, 180000); + ThreadPoolManager.schedule(this, 180000); break; case 2: BoatManager.getInstance().broadcastPackets(PRIMEVAL_DOCK, RUNE_DOCK[0], LEAVING_PRIMEVAL, PRIMEVAL_SOUND); @@ -139,7 +139,7 @@ public class BoatRunePrimeval implements Runnable _shoutCount = 0; } - ThreadPoolManager.getInstance().scheduleGeneral(this, 5000); + ThreadPoolManager.schedule(this, 5000); return; } _boat.executePath(RUNE_DOCK); @@ -147,7 +147,7 @@ public class BoatRunePrimeval implements Runnable case 4: BoatManager.getInstance().dockShip(BoatManager.RUNE_HARBOR, true); BoatManager.getInstance().broadcastPackets(RUNE_DOCK[0], PRIMEVAL_DOCK, ARRIVED_AT_RUNE, ARRIVED_AT_RUNE_2, RUNE_SOUND); - ThreadPoolManager.getInstance().scheduleGeneral(this, 180000); + ThreadPoolManager.schedule(this, 180000); break; } _shoutCount = 0; diff --git a/L2J_Mobius_HighFive/dist/game/data/scripts/vehicles/BoatTalkingGludin.java b/L2J_Mobius_HighFive/dist/game/data/scripts/vehicles/BoatTalkingGludin.java index 39db4db3dd..c6e1a1a7f0 100644 --- a/L2J_Mobius_HighFive/dist/game/data/scripts/vehicles/BoatTalkingGludin.java +++ b/L2J_Mobius_HighFive/dist/game/data/scripts/vehicles/BoatTalkingGludin.java @@ -145,15 +145,15 @@ public class BoatTalkingGludin implements Runnable { case 0: BoatManager.getInstance().broadcastPacket(TALKING_DOCK[0], GLUDIN_DOCK[0], LEAVE_TALKING5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 1: BoatManager.getInstance().broadcastPackets(TALKING_DOCK[0], GLUDIN_DOCK[0], LEAVE_TALKING1, LEAVE_TALKING1_2); - ThreadPoolManager.getInstance().scheduleGeneral(this, 40000); + ThreadPoolManager.schedule(this, 40000); break; case 2: BoatManager.getInstance().broadcastPacket(TALKING_DOCK[0], GLUDIN_DOCK[0], LEAVE_TALKING0); - ThreadPoolManager.getInstance().scheduleGeneral(this, 20000); + ThreadPoolManager.schedule(this, 20000); break; case 3: BoatManager.getInstance().dockShip(BoatManager.TALKING_ISLAND, false); @@ -161,15 +161,15 @@ public class BoatTalkingGludin implements Runnable _boat.broadcastPacket(TALKING_SOUND); _boat.payForRide(1074, 1, -96777, 258970, -3623); _boat.executePath(TALKING_TO_GLUDIN); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 4: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], TALKING_DOCK[0], ARRIVAL_GLUDIN10); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 5: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], TALKING_DOCK[0], ARRIVAL_GLUDIN5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 6: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], TALKING_DOCK[0], ARRIVAL_GLUDIN1); @@ -188,7 +188,7 @@ public class BoatTalkingGludin implements Runnable _shoutCount = 0; } - ThreadPoolManager.getInstance().scheduleGeneral(this, 5000); + ThreadPoolManager.schedule(this, 5000); return; } _boat.executePath(GLUDIN_DOCK); @@ -197,19 +197,19 @@ public class BoatTalkingGludin implements Runnable BoatManager.getInstance().dockShip(BoatManager.GLUDIN_HARBOR, true); BoatManager.getInstance().broadcastPackets(GLUDIN_DOCK[0], TALKING_DOCK[0], ARRIVED_AT_GLUDIN, ARRIVED_AT_GLUDIN_2); _boat.broadcastPacket(GLUDIN_SOUND); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 9: BoatManager.getInstance().broadcastPacket(TALKING_DOCK[0], GLUDIN_DOCK[0], LEAVE_GLUDIN5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 10: BoatManager.getInstance().broadcastPackets(TALKING_DOCK[0], GLUDIN_DOCK[0], LEAVE_GLUDIN1, LEAVE_TALKING1_2); - ThreadPoolManager.getInstance().scheduleGeneral(this, 40000); + ThreadPoolManager.schedule(this, 40000); break; case 11: BoatManager.getInstance().broadcastPacket(TALKING_DOCK[0], GLUDIN_DOCK[0], LEAVE_GLUDIN0); - ThreadPoolManager.getInstance().scheduleGeneral(this, 20000); + ThreadPoolManager.schedule(this, 20000); break; case 12: BoatManager.getInstance().dockShip(BoatManager.GLUDIN_HARBOR, false); @@ -217,15 +217,15 @@ public class BoatTalkingGludin implements Runnable _boat.broadcastPacket(GLUDIN_SOUND); _boat.payForRide(1075, 1, -90015, 150422, -3610); _boat.executePath(GLUDIN_TO_TALKING); - ThreadPoolManager.getInstance().scheduleGeneral(this, 150000); + ThreadPoolManager.schedule(this, 150000); break; case 13: BoatManager.getInstance().broadcastPacket(TALKING_DOCK[0], GLUDIN_DOCK[0], ARRIVAL_TALKING10); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 14: BoatManager.getInstance().broadcastPacket(TALKING_DOCK[0], GLUDIN_DOCK[0], ARRIVAL_TALKING5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 15: BoatManager.getInstance().broadcastPacket(TALKING_DOCK[0], GLUDIN_DOCK[0], ARRIVAL_TALKING1); @@ -244,7 +244,7 @@ public class BoatTalkingGludin implements Runnable _shoutCount = 0; } - ThreadPoolManager.getInstance().scheduleGeneral(this, 5000); + ThreadPoolManager.schedule(this, 5000); return; } _boat.executePath(TALKING_DOCK); @@ -253,7 +253,7 @@ public class BoatTalkingGludin implements Runnable BoatManager.getInstance().dockShip(BoatManager.TALKING_ISLAND, true); BoatManager.getInstance().broadcastPackets(TALKING_DOCK[0], GLUDIN_DOCK[0], ARRIVED_AT_TALKING, ARRIVED_AT_TALKING_2); _boat.broadcastPacket(TALKING_SOUND); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; } _shoutCount = 0; diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/Config.java b/L2J_Mobius_HighFive/java/com/l2jmobius/Config.java index 5f10d0c438..8c41843a45 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/Config.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/Config.java @@ -463,14 +463,10 @@ public final class Config public static boolean ALT_DEV_NO_SPAWNS; public static boolean ALT_DEV_SHOW_QUESTS_LOAD_IN_LOGS; public static boolean ALT_DEV_SHOW_SCRIPTS_LOAD_IN_LOGS; - public static int THREAD_P_EFFECTS; - public static int THREAD_P_GENERAL; - public static int THREAD_E_EVENTS; - public static int GENERAL_PACKET_THREAD_CORE_SIZE; - public static int IO_PACKET_THREAD_CORE_SIZE; - public static int GENERAL_THREAD_CORE_SIZE; - public static int AI_MAX_THREAD; - public static int EVENT_MAX_THREAD; + public static int SCHEDULED_THREAD_POOL_COUNT; + public static int THREADS_PER_SCHEDULED_THREAD_POOL; + public static int INSTANT_THREAD_POOL_COUNT; + public static int THREADS_PER_INSTANT_THREAD_POOL; public static int CLIENT_PACKET_QUEUE_SIZE; public static int CLIENT_PACKET_QUEUE_MAX_BURST_SIZE; public static int CLIENT_PACKET_QUEUE_MAX_PACKETS_PER_SECOND; @@ -1817,14 +1813,10 @@ public final class Config ALT_DEV_NO_SPAWNS = General.getBoolean("AltDevNoSpawns", false) || Boolean.getBoolean("nospawns"); ALT_DEV_SHOW_QUESTS_LOAD_IN_LOGS = General.getBoolean("AltDevShowQuestsLoadInLogs", false); ALT_DEV_SHOW_SCRIPTS_LOAD_IN_LOGS = General.getBoolean("AltDevShowScriptsLoadInLogs", false); - THREAD_P_EFFECTS = General.getInt("ThreadPoolSizeEffects", 10); - THREAD_P_GENERAL = General.getInt("ThreadPoolSizeGeneral", 13); - THREAD_E_EVENTS = General.getInt("ThreadPoolSizeEvents", 2); - IO_PACKET_THREAD_CORE_SIZE = General.getInt("UrgentPacketThreadCoreSize", 2); - GENERAL_PACKET_THREAD_CORE_SIZE = General.getInt("GeneralPacketThreadCoreSize", 4); - GENERAL_THREAD_CORE_SIZE = General.getInt("GeneralThreadCoreSize", 4); - AI_MAX_THREAD = General.getInt("AiMaxThread", 6); - EVENT_MAX_THREAD = General.getInt("EventsMaxThread", 5); + SCHEDULED_THREAD_POOL_COUNT = General.getInt("ScheduledThreadPoolCount", -1); + THREADS_PER_SCHEDULED_THREAD_POOL = General.getInt("ThreadsPerScheduledThreadPool", 4); + INSTANT_THREAD_POOL_COUNT = General.getInt("InstantThreadPoolCount", -1); + THREADS_PER_INSTANT_THREAD_POOL = General.getInt("ThreadsPerInstantThreadPool", 2); CLIENT_PACKET_QUEUE_SIZE = General.getInt("ClientPacketQueueSize", 0); if (CLIENT_PACKET_QUEUE_SIZE == 0) { diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/GameServer.java index 31382b7bfe..9481f378e2 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/GameServer.java @@ -160,13 +160,15 @@ public final class GameServer { final long serverLoadStart = System.currentTimeMillis(); + printSection("IdFactory"); if (!IdFactory.getInstance().isInitialized()) { _log.severe(getClass().getSimpleName() + ": Could not read object IDs from database. Please check your configuration."); throw new Exception("Could not initialize the ID factory!"); } - ThreadPoolManager.getInstance(); + printSection("ThreadPool"); + ThreadPoolManager.init(); EventDispatcher.getInstance(); new File("log/game").mkdirs(); diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/GameTimeController.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/GameTimeController.java index 4db280fa3a..2fad388241 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/GameTimeController.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/GameTimeController.java @@ -143,7 +143,7 @@ public final class GameTimeController extends Thread if (isNight) { - ThreadPoolManager.getInstance().executeAi(() -> DayNightSpawnManager.getInstance().notifyChangeMode()); + ThreadPoolManager.execute(() -> DayNightSpawnManager.getInstance().notifyChangeMode()); } while (true) @@ -175,7 +175,7 @@ public final class GameTimeController extends Thread { isNight = !isNight; - ThreadPoolManager.getInstance().executeAi(() -> DayNightSpawnManager.getInstance().notifyChangeMode()); + ThreadPoolManager.execute(() -> DayNightSpawnManager.getInstance().notifyChangeMode()); } } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ItemsAutoDestroy.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ItemsAutoDestroy.java index 0d2e1048dc..5f005acd01 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ItemsAutoDestroy.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ItemsAutoDestroy.java @@ -31,7 +31,7 @@ public final class ItemsAutoDestroy protected ItemsAutoDestroy() { - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this::removeItems, 5000, 5000); + ThreadPoolManager.scheduleAtFixedRate(this::removeItems, 5000, 5000); } public static ItemsAutoDestroy getInstance() diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/RecipeController.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/RecipeController.java index 809369db75..ac95cd36e9 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/RecipeController.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/RecipeController.java @@ -109,7 +109,7 @@ public class RecipeController if (Config.ALT_GAME_CREATION) { _activeMakers.put(manufacturer.getObjectId(), maker); - ThreadPoolManager.getInstance().scheduleGeneral(maker, 100); + ThreadPoolManager.schedule(maker, 100); } else { @@ -158,7 +158,7 @@ public class RecipeController if (Config.ALT_GAME_CREATION) { _activeMakers.put(player.getObjectId(), maker); - ThreadPoolManager.getInstance().scheduleGeneral(maker, 100); + ThreadPoolManager.schedule(maker, 100); } else { @@ -353,7 +353,7 @@ public class RecipeController _player.broadcastPacket(msk); _player.sendPacket(new SetupGauge(0, _delay)); - ThreadPoolManager.getInstance().scheduleGeneral(this, 100 + _delay); + ThreadPoolManager.schedule(this, 100 + _delay); } else { @@ -536,7 +536,7 @@ public class RecipeController if (Config.ALT_GAME_CREATION && isWait) { _player.sendPacket(new SetupGauge(0, _delay)); - ThreadPoolManager.getInstance().scheduleGeneral(this, 100 + _delay); + ThreadPoolManager.schedule(this, 100 + _delay); } else { @@ -558,7 +558,7 @@ public class RecipeController if (Config.ALT_GAME_CREATION && isWait) { _player.sendPacket(new SetupGauge(0, _delay)); - ThreadPoolManager.getInstance().scheduleGeneral(this, 100 + _delay); + ThreadPoolManager.schedule(this, 100 + _delay); } else { diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/SevenSigns.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/SevenSigns.java index 1a48188dc4..d73a559d90 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/SevenSigns.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/SevenSigns.java @@ -186,7 +186,7 @@ public class SevenSigns // Schedule a time for the next period change. final SevenSignsPeriodChange sspc = new SevenSignsPeriodChange(); - ThreadPoolManager.getInstance().scheduleGeneral(sspc, milliToChange); + ThreadPoolManager.schedule(sspc, milliToChange); // Thanks to http://rainbow.arch.scriptmania.com/scripts/timezone_countdown.html for help with this. final double numSecs = (milliToChange / 1000) % 60; @@ -1538,7 +1538,7 @@ public class SevenSigns setCalendarForNextPeriodChange(); final SevenSignsPeriodChange sspc = new SevenSignsPeriodChange(); - ThreadPoolManager.getInstance().scheduleGeneral(sspc, getMilliToPeriodChange()); + ThreadPoolManager.schedule(sspc, getMilliToPeriodChange()); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/SevenSignsFestival.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/SevenSignsFestival.java index ecfa67c2e5..9cea5616b8 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/SevenSignsFestival.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/SevenSignsFestival.java @@ -912,7 +912,7 @@ public class SevenSignsFestival implements SpawnListener // at the specified time, then invoke it automatically after every cycle. _managerInstance = new FestivalManager(); setNextFestivalStart(Config.ALT_FESTIVAL_MANAGER_START + FESTIVAL_SIGNUP_TIME); - _managerScheduledTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(_managerInstance, Config.ALT_FESTIVAL_MANAGER_START, Config.ALT_FESTIVAL_CYCLE_LENGTH); + _managerScheduledTask = ThreadPoolManager.scheduleAtFixedRate(_managerInstance, Config.ALT_FESTIVAL_MANAGER_START, Config.ALT_FESTIVAL_CYCLE_LENGTH); _log.info("SevenSignsFestival: The first Festival of Darkness cycle begins in " + (Config.ALT_FESTIVAL_MANAGER_START / 60000) + " minute(s)."); } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/Shutdown.java index 79e783afa4..2d28cb7f39 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/Shutdown.java @@ -213,7 +213,7 @@ public class Shutdown extends Thread // stop all thread pools try { - ThreadPoolManager.getInstance().shutdown(); + ThreadPoolManager.shutdown(); _log.info("Thread Pool Manager: Manager has been shut down(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); } catch (Throwable t) diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ThreadPoolManager.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ThreadPoolManager.java index 32774eee2a..4a8574e77d 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ThreadPoolManager.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ThreadPoolManager.java @@ -16,790 +16,284 @@ */ package com.l2jmobius.gameserver; -import java.lang.Thread.UncaughtExceptionHandler; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.RejectedExecutionException; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledThreadPoolExecutor; -import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.logging.Level; import java.util.logging.Logger; import com.l2jmobius.Config; -import com.l2jmobius.gameserver.model.StatsSet; /** + * This class handles thread pooling system. It relies on two ThreadPoolExecutor arrays, which poolers number is generated using config. *

- * This class is made to handle all the ThreadPools used in L2J. + * Those arrays hold following pools : *

- *

- * Scheduled Tasks can either be sent to a {@link #_generalScheduledThreadPool "general"} or {@link #_effectsScheduledThreadPool "effects"} {@link ScheduledThreadPoolExecutor ScheduledThreadPool}: The "effects" one is used for every effects (skills, hp/mp regen ...) while the "general" one is used - * for everything else that needs to be scheduled.
- * There also is an {@link #_aiScheduledThreadPool "ai"} {@link ScheduledThreadPoolExecutor ScheduledThreadPool} used for AI Tasks. - *

- *

- * Tasks can be sent to {@link ScheduledThreadPoolExecutor ScheduledThreadPool} either with: *

    - *
  • {@link #scheduleEffect(Runnable, long, TimeUnit)} and {@link #scheduleEffect(Runnable, long)} : for effects Tasks that needs to be executed only once.
  • - *
  • {@link #scheduleGeneral(Runnable, long, TimeUnit)} and {@link #scheduleGeneral(Runnable, long)} : for scheduled Tasks that needs to be executed once.
  • - *
  • {@link #scheduleAi(Runnable, long, TimeUnit)} and {@link #scheduleAi(Runnable, long)} : for AI Tasks that needs to be executed once
  • + *
  • Scheduled pool keeps a track about incoming, future events.
  • + *
  • Instant pool handles short-life events.
  • *
- * or - *
    - *
  • {@link #scheduleEffectAtFixedRate(Runnable, long, long, TimeUnit)} and {@link #scheduleEffectAtFixedRate(Runnable, long, long)} : for effects Tasks that needs to be executed periodically.
  • - *
  • {@link #scheduleGeneralAtFixedRate(Runnable, long, long, TimeUnit)} and {@link #scheduleGeneralAtFixedRate(Runnable, long, long)} : for scheduled Tasks that needs to be executed periodically.
  • - *
  • {@link #scheduleAiAtFixedRate(Runnable, long, long, TimeUnit)} and {@link #scheduleAiAtFixedRate(Runnable, long, long)} : for AI Tasks that needs to be executed periodically
  • - *
- *

- *

- * For all Tasks that should be executed with no delay asynchronously in a ThreadPool there also are usual {@link ThreadPoolExecutor ThreadPools} that can grow/shrink according to their load.: - *

    - *
  • {@link #_generalPacketsThreadPool GeneralPackets} where most packets handler are executed.
  • - *
  • {@link #_ioPacketsThreadPool I/O Packets} where all the i/o packets are executed.
  • - *
  • There will be an AI ThreadPool where AI events should be executed
  • - *
  • A general ThreadPool where everything else that needs to run asynchronously with no delay should be executed ({@link com.l2jmobius.gameserver.model.actor.knownlist KnownList} updates, SQL updates/inserts...)?
  • - *
- *

- * @author -Wooden- */ -public class ThreadPoolManager +public final class ThreadPoolManager { - protected static final Logger _log = Logger.getLogger(ThreadPoolManager.class.getName()); + protected static final Logger LOG = Logger.getLogger(ThreadPoolManager.class.getName()); - private static final class RunnableWrapper implements Runnable + private static final long MAX_DELAY = TimeUnit.NANOSECONDS.toMillis(Long.MAX_VALUE - System.nanoTime()) / 2; + + private static int _threadPoolRandomizer; + + protected static ScheduledThreadPoolExecutor[] _scheduledPools; + protected static ThreadPoolExecutor[] _instantPools; + + /** + * Init the different pools, based on Config. It is launched only once, on Gameserver instance. + */ + public static void init() { - private final Runnable _r; - - public RunnableWrapper(Runnable r) + // Feed scheduled pool. + int poolCount = Config.SCHEDULED_THREAD_POOL_COUNT; + if (poolCount == -1) { - _r = r; + poolCount = Runtime.getRuntime().availableProcessors(); } - @Override - public final void run() + _scheduledPools = new ScheduledThreadPoolExecutor[poolCount]; + for (int i = 0; i < poolCount; i++) { - try - { - _r.run(); - } - catch (Throwable e) - { - final Thread t = Thread.currentThread(); - final UncaughtExceptionHandler h = t.getUncaughtExceptionHandler(); - if (h != null) - { - h.uncaughtException(t, e); - } - } + _scheduledPools[i] = new ScheduledThreadPoolExecutor(Config.THREADS_PER_SCHEDULED_THREAD_POOL); } - } - - protected ScheduledThreadPoolExecutor _effectsScheduledThreadPool; - protected ScheduledThreadPoolExecutor _generalScheduledThreadPool; - protected ScheduledThreadPoolExecutor _aiScheduledThreadPool; - protected ScheduledThreadPoolExecutor _eventScheduledThreadPool; - private final ThreadPoolExecutor _generalPacketsThreadPool; - private final ThreadPoolExecutor _ioPacketsThreadPool; - private final ThreadPoolExecutor _generalThreadPool; - private final ThreadPoolExecutor _eventThreadPool; - - private boolean _shutdown; - - public static ThreadPoolManager getInstance() - { - return SingletonHolder._instance; - } - - protected ThreadPoolManager() - { - _effectsScheduledThreadPool = new ScheduledThreadPoolExecutor(Config.THREAD_P_EFFECTS, new PriorityThreadFactory("EffectsSTPool", Thread.NORM_PRIORITY)); - _generalScheduledThreadPool = new ScheduledThreadPoolExecutor(Config.THREAD_P_GENERAL, new PriorityThreadFactory("GeneralSTPool", Thread.NORM_PRIORITY)); - _eventScheduledThreadPool = new ScheduledThreadPoolExecutor(Config.THREAD_E_EVENTS, new PriorityThreadFactory("EventSTPool", Thread.NORM_PRIORITY)); - _ioPacketsThreadPool = new ThreadPoolExecutor(Config.IO_PACKET_THREAD_CORE_SIZE, Integer.MAX_VALUE, 5L, TimeUnit.SECONDS, new LinkedBlockingQueue(), new PriorityThreadFactory("I/O Packet Pool", Thread.NORM_PRIORITY + 1)); - _generalPacketsThreadPool = new ThreadPoolExecutor(Config.GENERAL_PACKET_THREAD_CORE_SIZE, Config.GENERAL_PACKET_THREAD_CORE_SIZE + 2, 15L, TimeUnit.SECONDS, new LinkedBlockingQueue(), new PriorityThreadFactory("Normal Packet Pool", Thread.NORM_PRIORITY + 1)); - _generalThreadPool = new ThreadPoolExecutor(Config.GENERAL_THREAD_CORE_SIZE, Config.GENERAL_THREAD_CORE_SIZE + 2, 5L, TimeUnit.SECONDS, new LinkedBlockingQueue(), new PriorityThreadFactory("General Pool", Thread.NORM_PRIORITY)); - _aiScheduledThreadPool = new ScheduledThreadPoolExecutor(Config.AI_MAX_THREAD, new PriorityThreadFactory("AISTPool", Thread.NORM_PRIORITY)); - _eventThreadPool = new ThreadPoolExecutor(Config.EVENT_MAX_THREAD, Config.EVENT_MAX_THREAD + 2, 5L, TimeUnit.SECONDS, new LinkedBlockingQueue(), new PriorityThreadFactory("Event Pool", Thread.NORM_PRIORITY)); - scheduleGeneralAtFixedRate(new PurgeTask(), 10, 5, TimeUnit.MINUTES); + // Feed instant pool. + poolCount = Config.INSTANT_THREAD_POOL_COUNT; + if (poolCount == -1) + { + poolCount = Runtime.getRuntime().availableProcessors(); + } + + _instantPools = new ThreadPoolExecutor[poolCount]; + for (int i = 0; i < poolCount; i++) + { + _instantPools[i] = new ThreadPoolExecutor(Config.THREADS_PER_INSTANT_THREAD_POOL, Config.THREADS_PER_INSTANT_THREAD_POOL, 0, TimeUnit.SECONDS, new ArrayBlockingQueue(100000)); + } + + // Prestart core threads. + for (ScheduledThreadPoolExecutor threadPool : _scheduledPools) + { + threadPool.prestartAllCoreThreads(); + } + + for (ThreadPoolExecutor threadPool : _instantPools) + { + threadPool.prestartAllCoreThreads(); + } + + // Launch purge task. + scheduleAtFixedRate(() -> + { + purge(); + }, 600000, 600000); + + LOG.info("ThreadPoolManager: Initialized " + getPoolSize(_instantPools) + "/" + getMaximumPoolSize(_instantPools) + " instant thread(s)."); + LOG.info("ThreadPoolManager: Initialized " + getPoolSize(_scheduledPools) + "/" + getMaximumPoolSize(_scheduledPools) + " scheduled thread(s)."); + } + + public static void purge() + { + for (ScheduledThreadPoolExecutor threadPool1 : _scheduledPools) + { + threadPool1.purge(); + } + for (ThreadPoolExecutor threadPool2 : _instantPools) + { + threadPool2.purge(); + } } /** - * Schedules an effect task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in the given time unit - * @param unit the time unit of the delay parameter - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation + * Schedules a one-shot action that becomes enabled after a delay. The pool is chosen based on pools activity. + * @param r : the task to execute. + * @param delay : the time from now to delay execution. + * @return a ScheduledFuture representing pending completion of the task and whose get() method will return null upon completion. */ - public ScheduledFuture scheduleEffect(Runnable task, long delay, TimeUnit unit) + public static ScheduledFuture schedule(Runnable r, long delay) { try { - return _effectsScheduledThreadPool.schedule(new RunnableWrapper(task), delay, unit); + return getPool(_scheduledPools).schedule(new TaskWrapper(r), validate(delay), TimeUnit.MILLISECONDS); } - catch (RejectedExecutionException e) + catch (Exception e) { return null; } } /** - * Schedules an effect task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation + * Schedules a periodic action that becomes enabled after a delay. The pool is chosen based on pools activity. + * @param r : the task to execute. + * @param delay : the time from now to delay execution. + * @param period : the period between successive executions. + * @return a ScheduledFuture representing pending completion of the task and whose get() method will throw an exception upon cancellation. */ - public ScheduledFuture scheduleEffect(Runnable task, long delay) - { - return scheduleEffect(task, delay, TimeUnit.MILLISECONDS); - } - - /** - * Schedules an effect task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in the given time unit - * @param period the period between executions in the given time unit - * @param unit the time unit of the initialDelay and period parameters - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleEffectAtFixedRate(Runnable task, long initialDelay, long period, TimeUnit unit) + public static ScheduledFuture scheduleAtFixedRate(Runnable r, long delay, long period) { try { - return _effectsScheduledThreadPool.scheduleAtFixedRate(new RunnableWrapper(task), initialDelay, period, unit); + return getPool(_scheduledPools).scheduleAtFixedRate(new TaskWrapper(r), validate(delay), validate(period), TimeUnit.MILLISECONDS); } - catch (RejectedExecutionException e) + catch (Exception e) { - return null; /* shutdown, ignore */ + return null; } } /** - * Schedules an effect task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in milliseconds - * @param period the period between executions in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation + * Executes the given task sometime in the future. + * @param r : the task to execute. */ - public ScheduledFuture scheduleEffectAtFixedRate(Runnable task, long initialDelay, long period) - { - return scheduleEffectAtFixedRate(task, initialDelay, period, TimeUnit.MILLISECONDS); - } - - /** - * Schedules a general task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in the given time unit - * @param unit the time unit of the delay parameter - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleGeneral(Runnable task, long delay, TimeUnit unit) + public static void execute(Runnable r) { try { - return _generalScheduledThreadPool.schedule(new RunnableWrapper(task), delay, unit); + getPool(_instantPools).execute(new TaskWrapper(r)); } - catch (RejectedExecutionException e) + catch (Exception e) { - return null; /* shutdown, ignore */ } } - /** - * Schedules a general task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleGeneral(Runnable task, long delay) + public static String[] getStats() { - return scheduleGeneral(task, delay, TimeUnit.MILLISECONDS); + List stats = new ArrayList<>(); + for (int i = 0; i < _scheduledPools.length; i++) + { + final ScheduledThreadPoolExecutor threadPool = _scheduledPools[i]; + stats.add("Scheduled pool #" + i + ":"); + stats.add(" |- ActiveCount: ...... " + threadPool.getActiveCount()); + stats.add(" |- CorePoolSize: ..... " + threadPool.getCorePoolSize()); + stats.add(" |- PoolSize: ......... " + threadPool.getPoolSize()); + stats.add(" |- LargestPoolSize: .. " + threadPool.getLargestPoolSize()); + stats.add(" |- MaximumPoolSize: .. " + threadPool.getMaximumPoolSize()); + stats.add(" |- CompletedTaskCount: " + threadPool.getCompletedTaskCount()); + stats.add(" |- QueuedTaskCount: .. " + threadPool.getQueue().size()); + stats.add(" |- TaskCount: ........ " + threadPool.getTaskCount()); + stats.add(" | -------"); + } + for (int i = 0; i < _instantPools.length; i++) + { + final ThreadPoolExecutor threadPool = _instantPools[i]; + stats.add("Scheduled pool #" + i + ":"); + stats.add(" |- ActiveCount: ...... " + threadPool.getActiveCount()); + stats.add(" |- CorePoolSize: ..... " + threadPool.getCorePoolSize()); + stats.add(" |- PoolSize: ......... " + threadPool.getPoolSize()); + stats.add(" |- LargestPoolSize: .. " + threadPool.getLargestPoolSize()); + stats.add(" |- MaximumPoolSize: .. " + threadPool.getMaximumPoolSize()); + stats.add(" |- CompletedTaskCount: " + threadPool.getCompletedTaskCount()); + stats.add(" |- QueuedTaskCount: .. " + threadPool.getQueue().size()); + stats.add(" |- TaskCount: ........ " + threadPool.getTaskCount()); + stats.add(" | -------"); + } + return stats.toArray(new String[stats.size()]); } /** - * Schedules a general task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in the given time unit - * @param period the period between executions in the given time unit - * @param unit the time unit of the initialDelay and period parameters - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation + * Shutdown thread pooling system correctly. Send different informations. */ - public ScheduledFuture scheduleGeneralAtFixedRate(Runnable task, long initialDelay, long period, TimeUnit unit) + public static void shutdown() { try { - return _generalScheduledThreadPool.scheduleAtFixedRate(new RunnableWrapper(task), initialDelay, period, unit); - } - catch (RejectedExecutionException e) - { - return null; /* shutdown, ignore */ - } - } - - /** - * Schedules a event task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in the given time unit - * @param unit the time unit of the delay parameter - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleEvent(Runnable task, long delay, TimeUnit unit) - { - try - { - return _eventScheduledThreadPool.schedule(new RunnableWrapper(task), delay, unit); - } - catch (RejectedExecutionException e) - { - return null; /* shutdown, ignore */ - } - } - - /** - * Schedules a event task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleEvent(Runnable task, long delay) - { - return scheduleEvent(task, delay, TimeUnit.MILLISECONDS); - } - - /** - * Schedules a event task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in the given time unit - * @param period the period between executions in the given time unit - * @param unit the time unit of the initialDelay and period parameters - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleEventAtFixedRate(Runnable task, long initialDelay, long period, TimeUnit unit) - { - try - { - return _eventScheduledThreadPool.scheduleAtFixedRate(new RunnableWrapper(task), initialDelay, period, unit); - } - catch (RejectedExecutionException e) - { - return null; /* shutdown, ignore */ - } - } - - /** - * Schedules a general task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in milliseconds - * @param period the period between executions in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleGeneralAtFixedRate(Runnable task, long initialDelay, long period) - { - return scheduleGeneralAtFixedRate(task, initialDelay, period, TimeUnit.MILLISECONDS); - } - - /** - * Schedules an AI task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in the given time unit - * @param unit the time unit of the delay parameter - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleAi(Runnable task, long delay, TimeUnit unit) - { - try - { - return _aiScheduledThreadPool.schedule(new RunnableWrapper(task), delay, unit); - } - catch (RejectedExecutionException e) - { - return null; /* shutdown, ignore */ - } - } - - /** - * Schedules an AI task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleAi(Runnable task, long delay) - { - return scheduleAi(task, delay, TimeUnit.MILLISECONDS); - } - - /** - * Schedules a general task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in the given time unit - * @param period the period between executions in the given time unit - * @param unit the time unit of the initialDelay and period parameters - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleAiAtFixedRate(Runnable task, long initialDelay, long period, TimeUnit unit) - { - try - { - return _aiScheduledThreadPool.scheduleAtFixedRate(new RunnableWrapper(task), initialDelay, period, unit); - } - catch (RejectedExecutionException e) - { - return null; /* shutdown, ignore */ - } - } - - /** - * Schedules a general task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in milliseconds - * @param period the period between executions in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleAiAtFixedRate(Runnable task, long initialDelay, long period) - { - return scheduleAiAtFixedRate(task, initialDelay, period, TimeUnit.MILLISECONDS); - } - - /** - * Executes a packet task sometime in future in another thread. - * @param task the task to execute - */ - public void executePacket(Runnable task) - { - try - { - _generalPacketsThreadPool.execute(task); - } - catch (RejectedExecutionException e) - { - /* shutdown, ignore */ - } - } - - /** - * Executes an IO packet task sometime in future in another thread. - * @param task the task to execute - */ - public void executeIOPacket(Runnable task) - { - try - { - _ioPacketsThreadPool.execute(task); - } - catch (RejectedExecutionException e) - { - /* shutdown, ignore */ - } - } - - /** - * Executes a general task sometime in future in another thread. - * @param task the task to execute - */ - public void executeGeneral(Runnable task) - { - try - { - _generalThreadPool.execute(new RunnableWrapper(task)); - } - catch (RejectedExecutionException e) - { - /* shutdown, ignore */ - } - } - - /** - * Executes an AI task sometime in future in another thread. - * @param task the task to execute - */ - public void executeAi(Runnable task) - { - try - { - _aiScheduledThreadPool.execute(new RunnableWrapper(task)); - } - catch (RejectedExecutionException e) - { - /* shutdown, ignore */ - } - } - - /** - * Executes an Event task sometime in future in another thread. - * @param task the task to execute - */ - public void executeEvent(Runnable task) - { - try - { - _eventThreadPool.execute(new RunnableWrapper(task)); - } - catch (RejectedExecutionException e) - { - /* shutdown, ignore */ - } - } - - public StatsSet getStats(String category) - { - final StatsSet StatsSet = new StatsSet(); - - switch (category) - { - case "EFFECTS": - { - StatsSet.set("ActiveThreads", _effectsScheduledThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _effectsScheduledThreadPool.getCorePoolSize()); - StatsSet.set("PoolSize", _effectsScheduledThreadPool.getPoolSize()); - StatsSet.set("MaximumPoolSize", _effectsScheduledThreadPool.getMaximumPoolSize()); - StatsSet.set("CompletedTasks", (int) _effectsScheduledThreadPool.getCompletedTaskCount()); - StatsSet.set("ScheduledTasks", _effectsScheduledThreadPool.getQueue().size()); - break; - } - case "GENERAL": - { - StatsSet.set("ActiveThreads", _generalScheduledThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSizes", _generalScheduledThreadPool.getCorePoolSize()); - StatsSet.set("PoolSizes", _generalScheduledThreadPool.getPoolSize()); - StatsSet.set("MaximumPoolSizes", _generalScheduledThreadPool.getMaximumPoolSize()); - StatsSet.set("CompletedTasks", (int) _generalScheduledThreadPool.getCompletedTaskCount()); - StatsSet.set("ScheduledTasks", _generalScheduledThreadPool.getQueue().size()); - break; - } - case "AI": - { - StatsSet.set("ActiveThreads", _aiScheduledThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _aiScheduledThreadPool.getCorePoolSize()); - StatsSet.set("PoolSize", _aiScheduledThreadPool.getPoolSize()); - StatsSet.set("MaximumPoolSize", _aiScheduledThreadPool.getMaximumPoolSize()); - StatsSet.set("CompletedTasks", (int) _aiScheduledThreadPool.getCompletedTaskCount()); - StatsSet.set("ScheduledTasks", _aiScheduledThreadPool.getQueue().size()); - break; - } - case "EVENT": - { - StatsSet.set("ActiveThreads", _eventScheduledThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _eventScheduledThreadPool.getCorePoolSize()); - StatsSet.set("PoolSize", _eventScheduledThreadPool.getPoolSize()); - StatsSet.set("MaximumPoolSize", _eventScheduledThreadPool.getMaximumPoolSize()); - StatsSet.set("CompletedTasks", (int) _eventScheduledThreadPool.getCompletedTaskCount()); - StatsSet.set("ScheduledTasks", _eventScheduledThreadPool.getQueue().size()); - break; - } - case "PACKETS": - { - StatsSet.set("ActiveThreads", _generalPacketsThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _generalPacketsThreadPool.getCorePoolSize()); - StatsSet.set("MaximumPoolSize", _generalPacketsThreadPool.getMaximumPoolSize()); - StatsSet.set("LargestPoolSize", _generalPacketsThreadPool.getLargestPoolSize()); - StatsSet.set("PoolSize", _generalPacketsThreadPool.getPoolSize()); - StatsSet.set("CompletedTasks", (int) _generalPacketsThreadPool.getCompletedTaskCount()); - StatsSet.set("QueuedTasks", _generalPacketsThreadPool.getQueue().size()); - break; - } - case "IOPACKETS": - { - StatsSet.set("ActiveThreads", _ioPacketsThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _ioPacketsThreadPool.getCorePoolSize()); - StatsSet.set("MaximumPoolSize", _ioPacketsThreadPool.getMaximumPoolSize()); - StatsSet.set("LargestPoolSize", _ioPacketsThreadPool.getLargestPoolSize()); - StatsSet.set("PoolSize", _ioPacketsThreadPool.getPoolSize()); - StatsSet.set("CompletedTasks", (int) _ioPacketsThreadPool.getCompletedTaskCount()); - StatsSet.set("QueuedTasks", _ioPacketsThreadPool.getQueue().size()); - break; - } - case "GENERAL_TASKS": - { - StatsSet.set("ActiveThreads", _generalThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _generalThreadPool.getCorePoolSize()); - StatsSet.set("MaximumPoolSize", _generalThreadPool.getMaximumPoolSize()); - StatsSet.set("LargestPoolSize", _generalThreadPool.getLargestPoolSize()); - StatsSet.set("PoolSize", _generalThreadPool.getPoolSize()); - StatsSet.set("CompletedTasks", (int) _generalThreadPool.getCompletedTaskCount()); - StatsSet.set("QueuedTasks", _generalThreadPool.getQueue().size()); - break; - } - case "EVENT_TASKS": - { - StatsSet.set("ActiveThreads", _eventThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _eventThreadPool.getCorePoolSize()); - StatsSet.set("MaximumPoolSize", _eventThreadPool.getMaximumPoolSize()); - StatsSet.set("LargestPoolSize", _eventThreadPool.getLargestPoolSize()); - StatsSet.set("PoolSize", _eventThreadPool.getPoolSize()); - StatsSet.set("CompletedTasks", (int) _eventThreadPool.getCompletedTaskCount()); - StatsSet.set("QueuedTasks", _eventThreadPool.getQueue().size()); - break; - } - } - return StatsSet; - } - - public String[] getStats() - { - return new String[] - { - "STP:", - " + Effects:", - " |- ActiveThreads: " + _effectsScheduledThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _effectsScheduledThreadPool.getCorePoolSize(), - " |- PoolSize: " + _effectsScheduledThreadPool.getPoolSize(), - " |- MaximumPoolSize: " + _effectsScheduledThreadPool.getMaximumPoolSize(), - " |- CompletedTasks: " + _effectsScheduledThreadPool.getCompletedTaskCount(), - " |- ScheduledTasks: " + _effectsScheduledThreadPool.getQueue().size(), - " | -------", - " + General:", - " |- ActiveThreads: " + _generalScheduledThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _generalScheduledThreadPool.getCorePoolSize(), - " |- PoolSize: " + _generalScheduledThreadPool.getPoolSize(), - " |- MaximumPoolSize: " + _generalScheduledThreadPool.getMaximumPoolSize(), - " |- CompletedTasks: " + _generalScheduledThreadPool.getCompletedTaskCount(), - " |- ScheduledTasks: " + _generalScheduledThreadPool.getQueue().size(), - " | -------", - " + AI:", - " |- ActiveThreads: " + _aiScheduledThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _aiScheduledThreadPool.getCorePoolSize(), - " |- PoolSize: " + _aiScheduledThreadPool.getPoolSize(), - " |- MaximumPoolSize: " + _aiScheduledThreadPool.getMaximumPoolSize(), - " |- CompletedTasks: " + _aiScheduledThreadPool.getCompletedTaskCount(), - " |- ScheduledTasks: " + _aiScheduledThreadPool.getQueue().size(), - " | -------", - " + Event:", - " |- ActiveThreads: " + _eventScheduledThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _eventScheduledThreadPool.getCorePoolSize(), - " |- PoolSize: " + _eventScheduledThreadPool.getPoolSize(), - " |- MaximumPoolSize: " + _eventScheduledThreadPool.getMaximumPoolSize(), - " |- CompletedTasks: " + _eventScheduledThreadPool.getCompletedTaskCount(), - " |- ScheduledTasks: " + _eventScheduledThreadPool.getQueue().size(), - "TP:", - " + Packets:", - " |- ActiveThreads: " + _generalPacketsThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _generalPacketsThreadPool.getCorePoolSize(), - " |- MaximumPoolSize: " + _generalPacketsThreadPool.getMaximumPoolSize(), - " |- LargestPoolSize: " + _generalPacketsThreadPool.getLargestPoolSize(), - " |- PoolSize: " + _generalPacketsThreadPool.getPoolSize(), - " |- CompletedTasks: " + _generalPacketsThreadPool.getCompletedTaskCount(), - " |- QueuedTasks: " + _generalPacketsThreadPool.getQueue().size(), - " | -------", - " + I/O Packets:", - " |- ActiveThreads: " + _ioPacketsThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _ioPacketsThreadPool.getCorePoolSize(), - " |- MaximumPoolSize: " + _ioPacketsThreadPool.getMaximumPoolSize(), - " |- LargestPoolSize: " + _ioPacketsThreadPool.getLargestPoolSize(), - " |- PoolSize: " + _ioPacketsThreadPool.getPoolSize(), - " |- CompletedTasks: " + _ioPacketsThreadPool.getCompletedTaskCount(), - " |- QueuedTasks: " + _ioPacketsThreadPool.getQueue().size(), - " | -------", - " + General Tasks:", - " |- ActiveThreads: " + _generalThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _generalThreadPool.getCorePoolSize(), - " |- MaximumPoolSize: " + _generalThreadPool.getMaximumPoolSize(), - " |- LargestPoolSize: " + _generalThreadPool.getLargestPoolSize(), - " |- PoolSize: " + _generalThreadPool.getPoolSize(), - " |- CompletedTasks: " + _generalThreadPool.getCompletedTaskCount(), - " |- QueuedTasks: " + _generalThreadPool.getQueue().size(), - " | -------", - " + Event Tasks:", - " |- ActiveThreads: " + _eventThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _eventThreadPool.getCorePoolSize(), - " |- MaximumPoolSize: " + _eventThreadPool.getMaximumPoolSize(), - " |- LargestPoolSize: " + _eventThreadPool.getLargestPoolSize(), - " |- PoolSize: " + _eventThreadPool.getPoolSize(), - " |- CompletedTasks: " + _eventThreadPool.getCompletedTaskCount(), - " |- QueuedTasks: " + _eventThreadPool.getQueue().size(), - " | -------" - }; - } - - private static class PriorityThreadFactory implements ThreadFactory - { - private final int _prio; - private final String _name; - private final AtomicInteger _threadNumber = new AtomicInteger(1); - private final ThreadGroup _group; - - public PriorityThreadFactory(String name, int prio) - { - _prio = prio; - _name = name; - _group = new ThreadGroup(_name); - } - - @Override - public Thread newThread(Runnable r) - { - final Thread t = new Thread(_group, r, _name + "-" + _threadNumber.getAndIncrement()); - t.setPriority(_prio); - return t; - } - - public ThreadGroup getGroup() - { - return _group; - } - } - - public void shutdown() - { - _shutdown = true; - try - { - _effectsScheduledThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _generalScheduledThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _generalPacketsThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _ioPacketsThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _generalThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _eventThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _effectsScheduledThreadPool.shutdown(); - _generalScheduledThreadPool.shutdown(); - _generalPacketsThreadPool.shutdown(); - _ioPacketsThreadPool.shutdown(); - _generalThreadPool.shutdown(); - _eventThreadPool.shutdown(); - _log.info("All ThreadPools are now stopped"); - } - catch (InterruptedException e) - { - _log.log(Level.WARNING, "There has been a problem shuting down the thread pool manager!", e); - } - } - - public boolean isShutdown() - { - return _shutdown; - } - - public void purge() - { - _effectsScheduledThreadPool.purge(); - _generalScheduledThreadPool.purge(); - _aiScheduledThreadPool.purge(); - _eventScheduledThreadPool.purge(); - _ioPacketsThreadPool.purge(); - _generalPacketsThreadPool.purge(); - _generalThreadPool.purge(); - _eventThreadPool.purge(); - } - - public String getPacketStats() - { - final StringBuilder sb = new StringBuilder(1000); - final ThreadFactory tf = _generalPacketsThreadPool.getThreadFactory(); - if (tf instanceof PriorityThreadFactory) - { - final PriorityThreadFactory ptf = (PriorityThreadFactory) tf; - final int count = ptf.getGroup().activeCount(); - final Thread[] threads = new Thread[count + 2]; - ptf.getGroup().enumerate(threads); - sb.append("General Packet Thread Pool:" + Config.EOL + "Tasks in the queue: " + _generalPacketsThreadPool.getQueue().size() + Config.EOL + "Showing threads stack trace:" + Config.EOL + "There should be " + count + " Threads" + Config.EOL); - for (Thread t : threads) - { - if (t == null) - { - continue; - } - - sb.append(t.getName()); - sb.append(Config.EOL); - for (StackTraceElement ste : t.getStackTrace()) - { - sb.append(ste); - sb.append(Config.EOL); - } - } - } - - sb.append("Packet Tp stack traces printed."); - sb.append(Config.EOL); - return sb.toString(); - } - - public String getIOPacketStats() - { - final StringBuilder sb = new StringBuilder(1000); - final ThreadFactory tf = _ioPacketsThreadPool.getThreadFactory(); - - if (tf instanceof PriorityThreadFactory) - { - final PriorityThreadFactory ptf = (PriorityThreadFactory) tf; - final int count = ptf.getGroup().activeCount(); - final Thread[] threads = new Thread[count + 2]; - ptf.getGroup().enumerate(threads); - sb.append("I/O Packet Thread Pool:" + Config.EOL + "Tasks in the queue: " + _ioPacketsThreadPool.getQueue().size() + Config.EOL + "Showing threads stack trace:" + Config.EOL + "There should be " + count + " Threads" + Config.EOL); + System.out.println("ThreadPoolManager: Shutting down."); - for (Thread t : threads) + for (ScheduledThreadPoolExecutor threadPool : _scheduledPools) { - if (t == null) - { - continue; - } - - sb.append(t.getName()); - sb.append(Config.EOL); - for (StackTraceElement ste : t.getStackTrace()) - { - sb.append(ste); - sb.append(Config.EOL); - } + threadPool.shutdownNow(); } - } - - sb.append("Packet Tp stack traces printed." + Config.EOL); - - return sb.toString(); - } - - public String getGeneralStats() - { - final StringBuilder sb = new StringBuilder(1000); - final ThreadFactory tf = _generalThreadPool.getThreadFactory(); - - if (tf instanceof PriorityThreadFactory) - { - final PriorityThreadFactory ptf = (PriorityThreadFactory) tf; - final int count = ptf.getGroup().activeCount(); - final Thread[] threads = new Thread[count + 2]; - ptf.getGroup().enumerate(threads); - sb.append("General Thread Pool:" + Config.EOL + "Tasks in the queue: " + _generalThreadPool.getQueue().size() + Config.EOL + "Showing threads stack trace:" + Config.EOL + "There should be " + +count + " Threads" + Config.EOL); - for (Thread t : threads) + for (ThreadPoolExecutor threadPool : _instantPools) { - if (t == null) - { - continue; - } - - sb.append(t.getName()); - sb.append(Config.EOL); - for (StackTraceElement ste : t.getStackTrace()) - { - sb.append(ste); - sb.append(Config.EOL); - } + threadPool.shutdownNow(); } } - - sb.append("Packet Tp stack traces printed." + Config.EOL); - - return sb.toString(); + catch (Throwable t) + { + t.printStackTrace(); + } } - protected class PurgeTask implements Runnable + /** + * @param : The pool type. + * @param threadPools : The pool array to check. + * @return the less fed pool. + */ + private static T getPool(T[] threadPools) { + return threadPools[_threadPoolRandomizer++ % threadPools.length]; + } + + /** + * @param delay : The delay to validate. + * @return a secured value, from 0 to MAX_DELAY. + */ + private static long validate(long delay) + { + return Math.max(0, Math.min(MAX_DELAY, delay)); + } + + /** + * @param threadPools : The pool array to check. + * @return the overall actual pools size. + */ + private static long getPoolSize(ThreadPoolExecutor[] threadPools) + { + long result = 0; + + for (ThreadPoolExecutor threadPool : threadPools) + { + result += threadPool.getPoolSize(); + } + + return result; + } + + /** + * @param threadPools : The pool array to check. + * @return the overall maximum pools size. + */ + private static long getMaximumPoolSize(ThreadPoolExecutor[] threadPools) + { + long result = 0; + + for (ThreadPoolExecutor threadPool : threadPools) + { + result += threadPool.getMaximumPoolSize(); + } + + return result; + } + + public static final class TaskWrapper implements Runnable + { + private final Runnable _runnable; + + public TaskWrapper(Runnable runnable) + { + _runnable = runnable; + } + @Override public void run() { - _effectsScheduledThreadPool.purge(); - _generalScheduledThreadPool.purge(); - _aiScheduledThreadPool.purge(); - _eventScheduledThreadPool.purge(); + try + { + _runnable.run(); + } + catch (RuntimeException e) + { + LOG.warning("Exception in a Runnable execution:" + e); + } } } - - private static class SingletonHolder - { - protected static final ThreadPoolManager _instance = new ThreadPoolManager(); - } } \ No newline at end of file diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/AbstractAI.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/AbstractAI.java index c10fbd991e..4eb6aede24 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/AbstractAI.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/AbstractAI.java @@ -836,7 +836,7 @@ public abstract class AbstractAI implements Ctrl // Create and Launch an AI Follow Task to execute every 1s _followTarget = target; - _followTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new FollowTask(), 5, FOLLOW_INTERVAL); + _followTask = ThreadPoolManager.scheduleAtFixedRate(new FollowTask(), 5, FOLLOW_INTERVAL); } /** @@ -853,7 +853,7 @@ public abstract class AbstractAI implements Ctrl } _followTarget = target; - _followTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new FollowTask(range), 5, ATTACK_FOLLOW_INTERVAL); + _followTask = ThreadPoolManager.scheduleAtFixedRate(new FollowTask(range), 5, ATTACK_FOLLOW_INTERVAL); } /** diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/L2AttackableAI.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/L2AttackableAI.java index 2fc00baf97..594deedc4f 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/L2AttackableAI.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/L2AttackableAI.java @@ -24,7 +24,6 @@ import java.util.Collection; import java.util.List; import java.util.Set; import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; import com.l2jmobius.Config; import com.l2jmobius.gameserver.GameTimeController; @@ -301,7 +300,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable // If not idle - create an AI task (schedule onEvtThink repeatedly) if (_aiTask == null) { - _aiTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this, 1000, 1000); + _aiTask = ThreadPoolManager.scheduleAtFixedRate(this, 1000, 1000); } } @@ -400,7 +399,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable { if ((_fearTime > 0) && (_fearTask == null)) { - _fearTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new FearTask(this, effector, start), 0, FEAR_TICKS, TimeUnit.SECONDS); + _fearTask = ThreadPoolManager.scheduleAtFixedRate(new FearTask(this, effector, start), 0, FEAR_TICKS * 1000); // seconds _actor.startAbnormalVisualEffect(true, AbnormalVisualEffect.TURN_FLEE); } else diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/L2CharacterAI.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/L2CharacterAI.java index b6f9ad8870..74a7095a7d 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/L2CharacterAI.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/L2CharacterAI.java @@ -311,7 +311,7 @@ public class L2CharacterAI extends AbstractAI if (_actor.getBowAttackEndTime() > GameTimeController.getInstance().getGameTicks()) { - ThreadPoolManager.getInstance().scheduleGeneral(new CastTask(_actor, skill, target), (_actor.getBowAttackEndTime() - GameTimeController.getInstance().getGameTicks()) * GameTimeController.MILLIS_IN_TICK); + ThreadPoolManager.schedule(new CastTask(_actor, skill, target), (_actor.getBowAttackEndTime() - GameTimeController.getInstance().getGameTicks()) * GameTimeController.MILLIS_IN_TICK); } else { diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/L2DoorAI.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/L2DoorAI.java index aee1b87376..211b44f906 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/L2DoorAI.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/L2DoorAI.java @@ -87,7 +87,7 @@ public class L2DoorAI extends L2CharacterAI @Override protected void onEvtAttacked(L2Character attacker) { - ThreadPoolManager.getInstance().executeGeneral(new onEventAttackedDoorTask((L2DoorInstance) _actor, attacker)); + ThreadPoolManager.execute(new onEventAttackedDoorTask((L2DoorInstance) _actor, attacker)); } @Override diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/L2FortSiegeGuardAI.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/L2FortSiegeGuardAI.java index adddc0209e..c2c767f7cc 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/L2FortSiegeGuardAI.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/L2FortSiegeGuardAI.java @@ -205,7 +205,7 @@ public class L2FortSiegeGuardAI extends L2CharacterAI implements Runnable // If not idle - create an AI task (schedule onEvtThink repeatedly) if (_aiTask == null) { - _aiTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this, 1000, 1000); + _aiTask = ThreadPoolManager.scheduleAtFixedRate(this, 1000, 1000); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/L2SiegeGuardAI.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/L2SiegeGuardAI.java index 62ef5b5854..c8814eae0d 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/L2SiegeGuardAI.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/L2SiegeGuardAI.java @@ -203,7 +203,7 @@ public class L2SiegeGuardAI extends L2CharacterAI implements Runnable // If not idle - create an AI task (schedule onEvtThink repeatedly) if (_aiTask == null) { - _aiTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this, 1000, 1000); + _aiTask = ThreadPoolManager.scheduleAtFixedRate(this, 1000, 1000); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/L2SummonAI.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/L2SummonAI.java index 87deb0ea6c..cb38164ec2 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/L2SummonAI.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/ai/L2SummonAI.java @@ -295,7 +295,7 @@ public class L2SummonAI extends L2PlayableAI implements Runnable { if (_avoidTask == null) { - _avoidTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this, 100, 100); + _avoidTask = ThreadPoolManager.scheduleAtFixedRate(this, 100, 100); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/cache/WarehouseCacheManager.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/cache/WarehouseCacheManager.java index ae00f2fe33..258e120fa2 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/cache/WarehouseCacheManager.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/cache/WarehouseCacheManager.java @@ -33,7 +33,7 @@ public class WarehouseCacheManager protected WarehouseCacheManager() { - ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new CacheScheduler(), 120000, 60000); + ThreadPoolManager.scheduleAtFixedRate(new CacheScheduler(), 120000, 60000); } public void addCacheTask(L2PcInstance pc) diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/data/sql/impl/ClanTable.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/data/sql/impl/ClanTable.java index b6cb3ddff2..32c4c133a8 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/data/sql/impl/ClanTable.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/data/sql/impl/ClanTable.java @@ -345,7 +345,7 @@ public class ClanTable public void scheduleRemoveClan(int clanId) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { if (getClan(clanId) == null) { diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/datatables/BotReportTable.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/datatables/BotReportTable.java index debdf8dc19..6e4346f30c 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/datatables/BotReportTable.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/datatables/BotReportTable.java @@ -422,11 +422,11 @@ public final class BotReportTable c.set(Calendar.DAY_OF_YEAR, c.get(Calendar.DAY_OF_YEAR) + 1); } - ThreadPoolManager.getInstance().scheduleGeneral(new ResetPointTask(), c.getTimeInMillis() - System.currentTimeMillis()); + ThreadPoolManager.schedule(new ResetPointTask(), c.getTimeInMillis() - System.currentTimeMillis()); } catch (Exception e) { - ThreadPoolManager.getInstance().scheduleGeneral(new ResetPointTask(), 24 * 3600 * 1000); + ThreadPoolManager.schedule(new ResetPointTask(), 24 * 3600 * 1000); LOGGER.log(Level.WARNING, "BotReportTable: Could not properly schedule bot report points reset task. Scheduled in 24 hours.", e); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/datatables/ItemTable.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/datatables/ItemTable.java index fd7e31a061..a251fac089 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/datatables/ItemTable.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/datatables/ItemTable.java @@ -220,14 +220,14 @@ public class ItemTable if ((raid.getFirstCommandChannelAttacked() != null) && !Config.AUTO_LOOT_RAIDS) { item.setOwnerId(raid.getFirstCommandChannelAttacked().getLeaderObjectId()); - itemLootShedule = ThreadPoolManager.getInstance().scheduleGeneral(new ResetOwner(item), Config.LOOT_RAIDS_PRIVILEGE_INTERVAL); + itemLootShedule = ThreadPoolManager.schedule(new ResetOwner(item), Config.LOOT_RAIDS_PRIVILEGE_INTERVAL); item.setItemLootShedule(itemLootShedule); } } else if (!Config.AUTO_LOOT || ((reference instanceof L2EventMonsterInstance) && ((L2EventMonsterInstance) reference).eventDropOnGround())) { item.setOwnerId(actor.getObjectId()); - itemLootShedule = ThreadPoolManager.getInstance().scheduleGeneral(new ResetOwner(item), 15000); + itemLootShedule = ThreadPoolManager.schedule(new ResetOwner(item), 15000); item.setItemLootShedule(itemLootShedule); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/idfactory/BitSetIDFactory.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/idfactory/BitSetIDFactory.java index 5563b6c5cc..c5ab0f5f5f 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/idfactory/BitSetIDFactory.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/idfactory/BitSetIDFactory.java @@ -53,7 +53,7 @@ public class BitSetIDFactory extends IdFactory synchronized (BitSetIDFactory.class) { - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new BitSetCapacityCheck(), 30000, 30000); + ThreadPoolManager.scheduleAtFixedRate(new BitSetCapacityCheck(), 30000, 30000); initialize(); } _log.info(getClass().getSimpleName() + ": " + _freeIds.size() + " id's available."); diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/CastleManorManager.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/CastleManorManager.java index c27fa9efc5..e03b2d4ddf 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/CastleManorManager.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/CastleManorManager.java @@ -28,7 +28,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import org.w3c.dom.Document; @@ -102,7 +101,7 @@ public final class CastleManorManager implements IXmlReader, IStorable // Schedule autosave if (!Config.ALT_MANOR_SAVE_ALL_ACTIONS) { - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this::storeMe, Config.ALT_MANOR_SAVE_PERIOD_RATE, Config.ALT_MANOR_SAVE_PERIOD_RATE, TimeUnit.HOURS); + ThreadPoolManager.scheduleAtFixedRate(this::storeMe, Config.ALT_MANOR_SAVE_PERIOD_RATE * 60 * 60 * 1000, Config.ALT_MANOR_SAVE_PERIOD_RATE * 60 * 60 * 1000); } // Send debug message @@ -279,7 +278,7 @@ public final class CastleManorManager implements IXmlReader, IStorable } } // Schedule mode change - ThreadPoolManager.getInstance().scheduleGeneral(this::changeMode, _nextModeChange.getTimeInMillis() - System.currentTimeMillis()); + ThreadPoolManager.schedule(this::changeMode, _nextModeChange.getTimeInMillis() - System.currentTimeMillis()); } public final void changeMode() diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/FishingChampionshipManager.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/FishingChampionshipManager.java index 81af369aa5..b2d19729c6 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/FishingChampionshipManager.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/FishingChampionshipManager.java @@ -79,7 +79,7 @@ public class FishingChampionshipManager } else { - ThreadPoolManager.getInstance().scheduleGeneral(new finishChamp(), _enddate - System.currentTimeMillis()); + ThreadPoolManager.schedule(new finishChamp(), _enddate - System.currentTimeMillis()); } } @@ -305,7 +305,7 @@ public class FishingChampionshipManager pl.sendPacket(html); refreshResult(); - ThreadPoolManager.getInstance().scheduleGeneral(new needRefresh(), 60000); + ThreadPoolManager.schedule(new needRefresh(), 60000); return; } @@ -471,7 +471,7 @@ public class FishingChampionshipManager shutdown(); _log.info("FishingChampionshipManager : new event period start."); - ThreadPoolManager.getInstance().scheduleGeneral(new finishChamp(), _enddate - System.currentTimeMillis()); + ThreadPoolManager.schedule(new finishChamp(), _enddate - System.currentTimeMillis()); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/FourSepulchersManager.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/FourSepulchersManager.java index 87725085ab..99de95752f 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/FourSepulchersManager.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/FourSepulchersManager.java @@ -204,25 +204,25 @@ public final class FourSepulchersManager if ((currentTime >= _coolDownTimeEnd) && (currentTime < _entryTimeEnd)) // entry time check { clean(); - _changeEntryTimeTask = ThreadPoolManager.getInstance().scheduleGeneral(new FourSepulchersChangeEntryTimeTask(), 0); + _changeEntryTimeTask = ThreadPoolManager.schedule(new FourSepulchersChangeEntryTimeTask(), 0); _log.info(getClass().getSimpleName() + ": Beginning in Entry time"); } else if ((currentTime >= _entryTimeEnd) && (currentTime < _warmUpTimeEnd)) // warmup time check { clean(); - _changeWarmUpTimeTask = ThreadPoolManager.getInstance().scheduleGeneral(new FourSepulchersChangeWarmUpTimeTask(), 0); + _changeWarmUpTimeTask = ThreadPoolManager.schedule(new FourSepulchersChangeWarmUpTimeTask(), 0); _log.info(getClass().getSimpleName() + ": Beginning in WarmUp time"); } else if ((currentTime >= _warmUpTimeEnd) && (currentTime < _attackTimeEnd)) // attack time check { clean(); - _changeAttackTimeTask = ThreadPoolManager.getInstance().scheduleGeneral(new FourSepulchersChangeAttackTimeTask(), 0); + _changeAttackTimeTask = ThreadPoolManager.schedule(new FourSepulchersChangeAttackTimeTask(), 0); _log.info(getClass().getSimpleName() + ": Beginning in Attack time"); } else // else cooldown time and without cleanup because it's already implemented { - _changeCoolDownTimeTask = ThreadPoolManager.getInstance().scheduleGeneral(new FourSepulchersChangeCoolDownTimeTask(), 0); + _changeCoolDownTimeTask = ThreadPoolManager.schedule(new FourSepulchersChangeCoolDownTimeTask(), 0); _log.info(getClass().getSimpleName() + ": Beginning in Cooldown time"); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/GrandBossManager.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/GrandBossManager.java index 6a205f1008..970e001d80 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/GrandBossManager.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/GrandBossManager.java @@ -109,7 +109,7 @@ public final class GrandBossManager implements IStorable { _log.log(Level.WARNING, "Error while initializing GrandBossManager: " + e.getMessage(), e); } - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new GrandBossManagerStoreTask(), 5 * 60 * 1000, 5 * 60 * 1000); + ThreadPoolManager.scheduleAtFixedRate(new GrandBossManagerStoreTask(), 5 * 60 * 1000, 5 * 60 * 1000); } /** diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java index 7b813f3b08..c8112762a4 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java @@ -86,7 +86,7 @@ public final class HandysBlockCheckerManager { holder.checkAndShuffle(); } - ThreadPoolManager.getInstance().executeGeneral(holder.getEvent().new StartEvent()); + ThreadPoolManager.execute(holder.getEvent().new StartEvent()); } else { @@ -345,7 +345,7 @@ public final class HandysBlockCheckerManager private void schedulePenaltyRemoval(int objId) { - ThreadPoolManager.getInstance().scheduleGeneral(new PenaltyRemoveTask(objId), 10000); + ThreadPoolManager.schedule(new PenaltyRemoveTask(objId), 10000); } /** diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/ItemsOnGroundManager.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/ItemsOnGroundManager.java index df74c9600a..1900b9bd9e 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/ItemsOnGroundManager.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/ItemsOnGroundManager.java @@ -47,7 +47,7 @@ public final class ItemsOnGroundManager implements Runnable { if (Config.SAVE_DROPPED_ITEM_INTERVAL > 0) { - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this, Config.SAVE_DROPPED_ITEM_INTERVAL, Config.SAVE_DROPPED_ITEM_INTERVAL); + ThreadPoolManager.scheduleAtFixedRate(this, Config.SAVE_DROPPED_ITEM_INTERVAL, Config.SAVE_DROPPED_ITEM_INTERVAL); } load(); } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/MailManager.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/MailManager.java index aa881e3804..7f307509ec 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/MailManager.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/MailManager.java @@ -72,11 +72,11 @@ public final class MailManager if (expiration < System.currentTimeMillis()) { - ThreadPoolManager.getInstance().scheduleGeneral(new MessageDeletionTask(msgId), 10000); + ThreadPoolManager.schedule(new MessageDeletionTask(msgId), 10000); } else { - ThreadPoolManager.getInstance().scheduleGeneral(new MessageDeletionTask(msgId), expiration - System.currentTimeMillis()); + ThreadPoolManager.schedule(new MessageDeletionTask(msgId), expiration - System.currentTimeMillis()); } } } @@ -181,7 +181,7 @@ public final class MailManager receiver.sendPacket(ExNoticePostArrived.valueOf(true)); } - ThreadPoolManager.getInstance().scheduleGeneral(new MessageDeletionTask(msg.getId()), msg.getExpiration() - System.currentTimeMillis()); + ThreadPoolManager.schedule(new MessageDeletionTask(msg.getId()), msg.getExpiration() - System.currentTimeMillis()); } public final void markAsReadInDb(int msgId) diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/PremiumManager.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/PremiumManager.java index 81808ad3ae..2e123d0caf 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/PremiumManager.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/PremiumManager.java @@ -110,7 +110,7 @@ public class PremiumManager */ private void startExpireTask(L2PcInstance player, long delay) { - ScheduledFuture task = ThreadPoolManager.getInstance().scheduleEvent(new PremiumExpireTask(player), delay); + ScheduledFuture task = ThreadPoolManager.schedule(new PremiumExpireTask(player), delay); expiretasks.put(player.getAccountName(), task); } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/RaidBossSpawnManager.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/RaidBossSpawnManager.java index f680569c65..18b960cf13 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/RaidBossSpawnManager.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/RaidBossSpawnManager.java @@ -186,7 +186,7 @@ public class RaidBossSpawnManager time.setTimeInMillis(respawnTime); _log.info(getClass().getSimpleName() + ": Updated " + boss.getName() + " respawn time to " + time.getTime()); - _schedules.put(boss.getId(), ThreadPoolManager.getInstance().scheduleGeneral(new SpawnSchedule(boss.getId()), respawnDelay)); + _schedules.put(boss.getId(), ThreadPoolManager.schedule(new SpawnSchedule(boss.getId()), respawnDelay)); updateDb(); } } @@ -242,7 +242,7 @@ public class RaidBossSpawnManager } else { - _schedules.put(bossId, ThreadPoolManager.getInstance().scheduleGeneral(new SpawnSchedule(bossId), respawnTime - Calendar.getInstance().getTimeInMillis())); + _schedules.put(bossId, ThreadPoolManager.schedule(new SpawnSchedule(bossId), respawnTime - Calendar.getInstance().getTimeInMillis())); } _spawns.put(bossId, spawnDat); diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/ServerRestartManager.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/ServerRestartManager.java index 25414ee46f..44634ef583 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/ServerRestartManager.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/ServerRestartManager.java @@ -71,7 +71,7 @@ public class ServerRestartManager if (lastRestart != null) { nextRestartTime = new SimpleDateFormat("HH:mm").format(lastRestart.getTime()); - ThreadPoolManager.getInstance().scheduleGeneral(new ServerRestartTask(), lastDelay - (Config.SERVER_RESTART_SCHEDULE_COUNTDOWN * 1000)); + ThreadPoolManager.schedule(new ServerRestartTask(), lastDelay - (Config.SERVER_RESTART_SCHEDULE_COUNTDOWN * 1000)); _log.info("Scheduled server restart at " + lastRestart.getTime().toString() + "."); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/SoDManager.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/SoDManager.java index 1363ecb24b..f06e2f4e71 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/SoDManager.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/SoDManager.java @@ -102,7 +102,7 @@ public final class SoDManager } else { - ThreadPoolManager.getInstance().scheduleEffect(new UpdateSoDStateTask(), Config.SOD_STAGE_2_LENGTH - timePast); + ThreadPoolManager.schedule(new UpdateSoDStateTask(), Config.SOD_STAGE_2_LENGTH - timePast); } break; case 3: diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/SoIManager.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/SoIManager.java index a1accfaad2..9bd8935741 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/SoIManager.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/SoIManager.java @@ -116,7 +116,7 @@ public class SoIManager spawnOpenedSeed(); DoorData.getInstance().getDoor(14240102).openMe(); - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { closeSeed(); setCurrentStage(4); diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/TerritoryWarManager.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/TerritoryWarManager.java index 22c9f30b4c..af9ad9b754 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/TerritoryWarManager.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/TerritoryWarManager.java @@ -275,7 +275,7 @@ public final class TerritoryWarManager implements Siegable { _scheduledEndTWTask.cancel(false); } - _scheduledEndTWTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndTWTask(), 1000); + _scheduledEndTWTask = ThreadPoolManager.schedule(new ScheduleEndTWTask(), 1000); } else { @@ -283,7 +283,7 @@ public final class TerritoryWarManager implements Siegable { _scheduledStartTWTask.cancel(false); } - _scheduledStartTWTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartTWTask(), 1000); + _scheduledStartTWTask = ThreadPoolManager.schedule(new ScheduleStartTWTask(), 1000); } } @@ -1261,14 +1261,14 @@ public final class TerritoryWarManager implements Siegable if (timeRemaining > 7200000) { _isRegistrationOver = false; - _scheduledStartTWTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartTWTask(), timeRemaining - 7200000); // Prepare task for 2h before TW start to end registration + _scheduledStartTWTask = ThreadPoolManager.schedule(new ScheduleStartTWTask(), timeRemaining - 7200000); // Prepare task for 2h before TW start to end registration } else if ((timeRemaining <= 7200000) && (timeRemaining > 1200000)) { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THE_TERRITORY_WAR_REQUEST_PERIOD_HAS_ENDED); Broadcast.toAllOnlinePlayers(sm); _isRegistrationOver = true; - _scheduledStartTWTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartTWTask(), timeRemaining - 1200000); // Prepare task for 20 mins left before TW start. + _scheduledStartTWTask = ThreadPoolManager.schedule(new ScheduleStartTWTask(), timeRemaining - 1200000); // Prepare task for 20 mins left before TW start. } else if ((timeRemaining <= 1200000) && (timeRemaining > 600000)) { @@ -1277,7 +1277,7 @@ public final class TerritoryWarManager implements Siegable _isTWChannelOpen = true; _isRegistrationOver = true; updatePlayerTWStateFlags(false); - _scheduledStartTWTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartTWTask(), timeRemaining - 600000); // Prepare task for 10 mins left before TW start. + _scheduledStartTWTask = ThreadPoolManager.schedule(new ScheduleStartTWTask(), timeRemaining - 600000); // Prepare task for 10 mins left before TW start. } else if ((timeRemaining <= 600000) && (timeRemaining > 300000)) { @@ -1286,7 +1286,7 @@ public final class TerritoryWarManager implements Siegable _isTWChannelOpen = true; _isRegistrationOver = true; updatePlayerTWStateFlags(false); - _scheduledStartTWTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartTWTask(), timeRemaining - 300000); // Prepare task for 5 mins left before TW start. + _scheduledStartTWTask = ThreadPoolManager.schedule(new ScheduleStartTWTask(), timeRemaining - 300000); // Prepare task for 5 mins left before TW start. } else if ((timeRemaining <= 300000) && (timeRemaining > 60000)) { @@ -1295,7 +1295,7 @@ public final class TerritoryWarManager implements Siegable _isTWChannelOpen = true; _isRegistrationOver = true; updatePlayerTWStateFlags(false); - _scheduledStartTWTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartTWTask(), timeRemaining - 60000); // Prepare task for 1 min left before TW start. + _scheduledStartTWTask = ThreadPoolManager.schedule(new ScheduleStartTWTask(), timeRemaining - 60000); // Prepare task for 1 min left before TW start. } else if ((timeRemaining <= 60000) && (timeRemaining > 0)) { @@ -1304,15 +1304,15 @@ public final class TerritoryWarManager implements Siegable _isTWChannelOpen = true; _isRegistrationOver = true; updatePlayerTWStateFlags(false); - _scheduledStartTWTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartTWTask(), timeRemaining); // Prepare task for TW start. + _scheduledStartTWTask = ThreadPoolManager.schedule(new ScheduleStartTWTask(), timeRemaining); // Prepare task for TW start. } else if ((timeRemaining + WARLENGTH) > 0) { _isTWChannelOpen = true; _isRegistrationOver = true; startTerritoryWar(); - _scheduledEndTWTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndTWTask(), 1000); // Prepare task for TW end. - _scheduledRewardOnlineTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new RewardOnlineParticipants(), 60000, 60000); + _scheduledEndTWTask = ThreadPoolManager.schedule(new ScheduleEndTWTask(), 1000); // Prepare task for TW end. + _scheduledRewardOnlineTask = ThreadPoolManager.scheduleAtFixedRate(new RewardOnlineParticipants(), 60000, 60000); } } catch (Exception e) @@ -1342,41 +1342,41 @@ public final class TerritoryWarManager implements Siegable final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THE_TERRITORY_WAR_WILL_END_IN_S1_HOUR_S); sm.addInt(2); announceToParticipants(sm, 0, 0); - _scheduledEndTWTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndTWTask(), timeRemaining - 3600000); // Prepare task for 1 hr left. + _scheduledEndTWTask = ThreadPoolManager.schedule(new ScheduleEndTWTask(), timeRemaining - 3600000); // Prepare task for 1 hr left. } else if ((timeRemaining <= 3600000) && (timeRemaining > 600000)) { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THE_TERRITORY_WAR_WILL_END_IN_S1_MINUTE_S); sm.addInt((int) (timeRemaining / 60000)); announceToParticipants(sm, 0, 0); - _scheduledEndTWTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndTWTask(), timeRemaining - 600000); // Prepare task for 10 minute left. + _scheduledEndTWTask = ThreadPoolManager.schedule(new ScheduleEndTWTask(), timeRemaining - 600000); // Prepare task for 10 minute left. } else if ((timeRemaining <= 600000) && (timeRemaining > 300000)) { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THE_TERRITORY_WAR_WILL_END_IN_S1_MINUTE_S); sm.addInt((int) (timeRemaining / 60000)); announceToParticipants(sm, 0, 0); - _scheduledEndTWTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndTWTask(), timeRemaining - 300000); // Prepare task for 5 minute left. + _scheduledEndTWTask = ThreadPoolManager.schedule(new ScheduleEndTWTask(), timeRemaining - 300000); // Prepare task for 5 minute left. } else if ((timeRemaining <= 300000) && (timeRemaining > 10000)) { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THE_TERRITORY_WAR_WILL_END_IN_S1_MINUTE_S); sm.addInt((int) (timeRemaining / 60000)); announceToParticipants(sm, 0, 0); - _scheduledEndTWTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndTWTask(), timeRemaining - 10000); // Prepare task for 10 seconds count down + _scheduledEndTWTask = ThreadPoolManager.schedule(new ScheduleEndTWTask(), timeRemaining - 10000); // Prepare task for 10 seconds count down } else if ((timeRemaining <= 10000) && (timeRemaining > 0)) { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_SECOND_S_TO_THE_END_OF_TERRITORY_WAR); sm.addInt((int) (timeRemaining / 1000)); announceToParticipants(sm, 0, 0); - _scheduledEndTWTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndTWTask(), timeRemaining); // Prepare task for second count down + _scheduledEndTWTask = ThreadPoolManager.schedule(new ScheduleEndTWTask(), timeRemaining); // Prepare task for second count down } else { endTerritoryWar(); - // _scheduledStartTWTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartTWTask(), 1000); - ThreadPoolManager.getInstance().scheduleGeneral(new closeTerritoryChannelTask(), 600000); + // _scheduledStartTWTask = ThreadPoolManager.schedule(new ScheduleStartTWTask(), 1000); + ThreadPoolManager.schedule(new closeTerritoryChannelTask(), 600000); } } catch (Exception e) diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/WalkingManager.java index a209373e1d..f9a74d77f0 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -271,7 +271,7 @@ public final class WalkingManager implements IXmlReader npc.sendDebugMessage("Starting to move at route '" + routeName + "'"); npc.setIsRunning(node.runToLocation()); npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, node); - walk.setWalkCheckTask(ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new StartMovingTask(npc, routeName), 60000, 60000)); // start walk check task, for resuming walk after fight + walk.setWalkCheckTask(ThreadPoolManager.scheduleAtFixedRate(new StartMovingTask(npc, routeName), 60000, 60000)); // start walk check task, for resuming walk after fight npc.getKnownList().startTrackingTask(); @@ -280,7 +280,7 @@ public final class WalkingManager implements IXmlReader else { npc.sendDebugMessage("Failed to start moving along route '" + routeName + "', scheduled"); - ThreadPoolManager.getInstance().scheduleGeneral(new StartMovingTask(npc, routeName), 60000); + ThreadPoolManager.schedule(new StartMovingTask(npc, routeName), 60000); } } // walk was stopped due to some reason (arrived to node, script action, fight or something else), resume it @@ -422,7 +422,7 @@ public final class WalkingManager implements IXmlReader { walk.setLastAction(System.currentTimeMillis()); } - ThreadPoolManager.getInstance().scheduleGeneral(new ArrivedTask(npc, walk), 100 + (node.getDelay() * 1000L)); + ThreadPoolManager.schedule(new ArrivedTask(npc, walk), 100 + (node.getDelay() * 1000L)); } /** diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/games/Lottery.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/games/Lottery.java index ca7ed9301e..76526f7503 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/games/Lottery.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/games/Lottery.java @@ -152,12 +152,12 @@ public class Lottery if (_enddate > System.currentTimeMillis()) { _isStarted = true; - ThreadPoolManager.getInstance().scheduleGeneral(new finishLottery(), _enddate - System.currentTimeMillis()); + ThreadPoolManager.schedule(new finishLottery(), _enddate - System.currentTimeMillis()); if (_enddate > (System.currentTimeMillis() + (12 * MINUTE))) { _isSellingTickets = true; - ThreadPoolManager.getInstance().scheduleGeneral(new stopSellingTickets(), _enddate - System.currentTimeMillis() - (10 * MINUTE)); + ThreadPoolManager.schedule(new stopSellingTickets(), _enddate - System.currentTimeMillis() - (10 * MINUTE)); } return; } @@ -195,8 +195,8 @@ public class Lottery _enddate = finishtime.getTimeInMillis(); } - ThreadPoolManager.getInstance().scheduleGeneral(new stopSellingTickets(), _enddate - System.currentTimeMillis() - (10 * MINUTE)); - ThreadPoolManager.getInstance().scheduleGeneral(new finishLottery(), _enddate - System.currentTimeMillis()); + ThreadPoolManager.schedule(new stopSellingTickets(), _enddate - System.currentTimeMillis() - (10 * MINUTE)); + ThreadPoolManager.schedule(new finishLottery(), _enddate - System.currentTimeMillis()); try (Connection con = DatabaseFactory.getInstance().getConnection(); PreparedStatement ps = con.prepareStatement(INSERT_LOTTERY)) @@ -436,7 +436,7 @@ public class Lottery _log.log(Level.WARNING, "Lottery: Could not store finished lottery data: " + e.getMessage(), e); } - ThreadPoolManager.getInstance().scheduleGeneral(new startLottery(), MINUTE); + ThreadPoolManager.schedule(new startLottery(), MINUTE); _number++; _isStarted = false; diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/tasks/FourSepulchersChangeAttackTimeTask.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/tasks/FourSepulchersChangeAttackTimeTask.java index 9eea722143..89e9b008dc 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/tasks/FourSepulchersChangeAttackTimeTask.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/tasks/FourSepulchersChangeAttackTimeTask.java @@ -61,14 +61,14 @@ public final class FourSepulchersChangeAttackTimeTask implements Runnable { final Calendar inter = Calendar.getInstance(); inter.set(Calendar.MINUTE, (int) min); - ThreadPoolManager.getInstance().scheduleGeneral(new FourSepulchersManagerSayTask(), inter.getTimeInMillis() - Calendar.getInstance().getTimeInMillis()); + ThreadPoolManager.schedule(new FourSepulchersManagerSayTask(), inter.getTimeInMillis() - Calendar.getInstance().getTimeInMillis()); break; } } } else { - ThreadPoolManager.getInstance().scheduleGeneral(new FourSepulchersManagerSayTask(), 5 * 60400); + ThreadPoolManager.schedule(new FourSepulchersManagerSayTask(), 5 * 60400); } // searching time when attack time will be ended: // counting difference between time when attack time ends and @@ -83,7 +83,7 @@ public final class FourSepulchersChangeAttackTimeTask implements Runnable interval = Config.FS_TIME_ATTACK * 60000L; } - manager.setChangeCoolDownTimeTask(ThreadPoolManager.getInstance().scheduleGeneral(new FourSepulchersChangeCoolDownTimeTask(), interval)); + manager.setChangeCoolDownTimeTask(ThreadPoolManager.schedule(new FourSepulchersChangeCoolDownTimeTask(), interval)); final ScheduledFuture changeAttackTimeTask = manager.getChangeAttackTimeTask(); if (changeAttackTimeTask != null) diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/tasks/FourSepulchersChangeCoolDownTimeTask.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/tasks/FourSepulchersChangeCoolDownTimeTask.java index 276ad8a7d9..d2e454376a 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/tasks/FourSepulchersChangeCoolDownTimeTask.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/tasks/FourSepulchersChangeCoolDownTimeTask.java @@ -54,7 +54,7 @@ public final class FourSepulchersChangeCoolDownTimeTask implements Runnable final long interval = time.getTimeInMillis() - Calendar.getInstance().getTimeInMillis(); - manager.setChangeEntryTimeTask(ThreadPoolManager.getInstance().scheduleGeneral(new FourSepulchersChangeEntryTimeTask(), interval)); + manager.setChangeEntryTimeTask(ThreadPoolManager.schedule(new FourSepulchersChangeEntryTimeTask(), interval)); final ScheduledFuture changeCoolDownTimeTask = manager.getChangeCoolDownTimeTask(); if (changeCoolDownTimeTask != null) diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/tasks/FourSepulchersChangeEntryTimeTask.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/tasks/FourSepulchersChangeEntryTimeTask.java index fdc82cb29f..0abd0b96ff 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/tasks/FourSepulchersChangeEntryTimeTask.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/tasks/FourSepulchersChangeEntryTimeTask.java @@ -40,8 +40,8 @@ public final class FourSepulchersChangeEntryTimeTask implements Runnable final long interval = manager.isFirstTimeRun() ? manager.getEntrytTimeEnd() - Calendar.getInstance().getTimeInMillis() : Config.FS_TIME_ENTRY * 60000L; // launching saying process... - ThreadPoolManager.getInstance().scheduleGeneral(new FourSepulchersManagerSayTask(), 0); - manager.setChangeWarmUpTimeTask(ThreadPoolManager.getInstance().scheduleEffect(new FourSepulchersChangeWarmUpTimeTask(), interval)); + ThreadPoolManager.schedule(new FourSepulchersManagerSayTask(), 0); + manager.setChangeWarmUpTimeTask(ThreadPoolManager.schedule(new FourSepulchersChangeWarmUpTimeTask(), interval)); final ScheduledFuture changeEntryTimeTask = manager.getChangeEntryTimeTask(); if (changeEntryTimeTask != null) diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/tasks/FourSepulchersChangeWarmUpTimeTask.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/tasks/FourSepulchersChangeWarmUpTimeTask.java index 2f5ecc3b61..420c3878db 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/tasks/FourSepulchersChangeWarmUpTimeTask.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/tasks/FourSepulchersChangeWarmUpTimeTask.java @@ -39,7 +39,7 @@ public final class FourSepulchersChangeWarmUpTimeTask implements Runnable manager.setIsCoolDownTime(false); final long interval = manager.isFirstTimeRun() ? manager.getWarmUpTimeEnd() - Calendar.getInstance().getTimeInMillis() : Config.FS_TIME_WARMUP * 60000L; - manager.setChangeAttackTimeTask(ThreadPoolManager.getInstance().scheduleGeneral(new FourSepulchersChangeAttackTimeTask(), interval)); + manager.setChangeAttackTimeTask(ThreadPoolManager.schedule(new FourSepulchersChangeAttackTimeTask(), interval)); final ScheduledFuture changeWarmUpTimeTask = manager.getChangeWarmUpTimeTask(); if (changeWarmUpTimeTask != null) diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/tasks/FourSepulchersManagerSayTask.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/tasks/FourSepulchersManagerSayTask.java index b8cb9752ef..346f324151 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/tasks/FourSepulchersManagerSayTask.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/instancemanager/tasks/FourSepulchersManagerSayTask.java @@ -43,7 +43,7 @@ public final class FourSepulchersManagerSayTask implements Runnable // cannot be // more than // 59 - ThreadPoolManager.getInstance().scheduleGeneral(new FourSepulchersManagerSayTask(), 5 * 60000); + ThreadPoolManager.schedule(new FourSepulchersManagerSayTask(), 5 * 60000); } // attack time ending chat else if ((tmp.get(Calendar.MINUTE) + 5) >= Config.FS_TIME_ATTACK) diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/AutoSpawnHandler.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/AutoSpawnHandler.java index 66c4b8e4a1..2b3d20a3b8 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/AutoSpawnHandler.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/AutoSpawnHandler.java @@ -274,7 +274,7 @@ public class AutoSpawnHandler if (isActive) { final AutoSpawner rs = new AutoSpawner(objectId); - spawnTask = spawnInst._desDelay > 0 ? ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(rs, spawnInst._initDelay, spawnInst._resDelay) : ThreadPoolManager.getInstance().scheduleEffect(rs, spawnInst._initDelay); + spawnTask = spawnInst._desDelay > 0 ? ThreadPoolManager.scheduleAtFixedRate(rs, spawnInst._initDelay, spawnInst._resDelay) : ThreadPoolManager.schedule(rs, spawnInst._initDelay); _runningSpawns.put(objectId, spawnTask); } else @@ -285,7 +285,7 @@ public class AutoSpawnHandler { spawnTask.cancel(false); } - ThreadPoolManager.getInstance().scheduleEffect(rd, 0); + ThreadPoolManager.schedule(rd, 0); } spawnInst.setSpawnActive(isActive); } @@ -489,7 +489,7 @@ public class AutoSpawnHandler // If there is no despawn time, do not create a despawn task. if (spawnInst.getDespawnDelay() > 0) { - ThreadPoolManager.getInstance().scheduleAi(new AutoDespawner(_objectId), spawnInst.getDespawnDelay() - 1000); + ThreadPoolManager.schedule(new AutoDespawner(_objectId), spawnInst.getDespawnDelay() - 1000); } } catch (Exception e) diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/CharEffectList.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/CharEffectList.java index 3b5db57c98..fb50f26aab 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/CharEffectList.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/CharEffectList.java @@ -1308,7 +1308,7 @@ public final class CharEffectList return; } // Schedule the icon update packets 500miliseconds ahead, so it can gather-up most of the changes. - _effectIconsUpdate = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _effectIconsUpdate = ThreadPoolManager.schedule(() -> { AbnormalStatusUpdate asu = null; PartySpelled ps = null; diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/CursedWeapon.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/CursedWeapon.java index f8e7f65d74..e6ad8a780c 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/CursedWeapon.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/CursedWeapon.java @@ -352,7 +352,7 @@ public class CursedWeapon implements INamable { _player.stopTransformation(true); - ThreadPoolManager.getInstance().scheduleGeneral(() -> TransformData.getInstance().transformPlayer(transformationId, _player), 500); + ThreadPoolManager.schedule(() -> TransformData.getInstance().transformPlayer(transformationId, _player), 500); } else { @@ -378,7 +378,7 @@ public class CursedWeapon implements INamable } else { - _removeTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new RemoveTask(), _durationLost * 12000L, _durationLost * 12000L); + _removeTask = ThreadPoolManager.scheduleAtFixedRate(new RemoveTask(), _durationLost * 12000L, _durationLost * 12000L); } } @@ -391,7 +391,7 @@ public class CursedWeapon implements INamable // Start the Life Task _endTime = System.currentTimeMillis() + (_duration * 60000L); - _removeTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new RemoveTask(), _durationLost * 12000L, _durationLost * 12000L); + _removeTask = ThreadPoolManager.scheduleAtFixedRate(new RemoveTask(), _durationLost * 12000L, _durationLost * 12000L); return true; } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/DropProtection.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/DropProtection.java index c6bcccafb3..d0648e4f20 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/DropProtection.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/DropProtection.java @@ -84,6 +84,6 @@ public class DropProtection implements Runnable throw new NullPointerException("Trying to protect dropped item to null owner"); } - _task = ThreadPoolManager.getInstance().scheduleGeneral(this, PROTECTED_MILLIS_TIME); + _task = ThreadPoolManager.schedule(this, PROTECTED_MILLIS_TIME); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/L2Party.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/L2Party.java index b232763ff6..d2db22f3e8 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/L2Party.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/L2Party.java @@ -359,7 +359,7 @@ public class L2Party extends AbstractPlayerGroup if (_positionBroadcastTask == null) { - _positionBroadcastTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(() -> + _positionBroadcastTask = ThreadPoolManager.scheduleAtFixedRate(() -> { if (_positionPacket == null) { @@ -993,7 +993,7 @@ public class L2Party extends AbstractPlayerGroup } _changeRequestDistributionType = partyDistributionType; _changeDistributionTypeAnswers = new HashSet<>(); - _changeDistributionTypeRequestTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> finishLootRequest(false), PARTY_DISTRIBUTION_TYPE_REQUEST_TIMEOUT.toMillis()); + _changeDistributionTypeRequestTask = ThreadPoolManager.schedule(() -> finishLootRequest(false), PARTY_DISTRIBUTION_TYPE_REQUEST_TIMEOUT.toMillis()); broadcastToPartyMembers(getLeader(), new ExAskModifyPartyLooting(getLeader().getName(), partyDistributionType)); diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/L2Request.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/L2Request.java index 8771a7c86e..5ffe96fce3 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/L2Request.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/L2Request.java @@ -123,7 +123,7 @@ public class L2Request { _isRequestor = isRequestor; _isAnswerer = !isRequestor; - ThreadPoolManager.getInstance().scheduleGeneral(() -> clear(), REQUEST_TIMEOUT * 1000); + ThreadPoolManager.schedule(() -> clear(), REQUEST_TIMEOUT * 1000); } /** diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/L2Spawn.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/L2Spawn.java index 42300084da..15dd3e259d 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/L2Spawn.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/L2Spawn.java @@ -446,7 +446,7 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable // Create a new SpawnTask to launch after the respawn Delay // ClientScheduler.getInstance().scheduleLow(new SpawnTask(npcId), _respawnDelay); - ThreadPoolManager.getInstance().scheduleGeneral(new SpawnTask(oldNpc), hasRespawnRandom() ? Rnd.get(_respawnMinDelay, _respawnMaxDelay) : _respawnMinDelay); + ThreadPoolManager.schedule(new SpawnTask(oldNpc), hasRespawnRandom() ? Rnd.get(_respawnMinDelay, _respawnMaxDelay) : _respawnMinDelay); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/L2WorldRegion.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/L2WorldRegion.java index a4eb8378f6..bda23c9b61 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/L2WorldRegion.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/L2WorldRegion.java @@ -330,7 +330,7 @@ public final class L2WorldRegion } // then, set a timer to activate the neighbors - _neighborsTask = ThreadPoolManager.getInstance().scheduleGeneral(new NeighborsTask(true), 1000 * Config.GRID_NEIGHBOR_TURNON_TIME); + _neighborsTask = ThreadPoolManager.schedule(new NeighborsTask(true), 1000 * Config.GRID_NEIGHBOR_TURNON_TIME); } } @@ -350,7 +350,7 @@ public final class L2WorldRegion // start a timer to "suggest" a deactivate to self and neighbors. // suggest means: first check if a neighbor has L2PcInstances in it. If not, deactivate. - _neighborsTask = ThreadPoolManager.getInstance().scheduleGeneral(new NeighborsTask(false), 1000 * Config.GRID_NEIGHBOR_TURNOFF_TIME); + _neighborsTask = ThreadPoolManager.schedule(new NeighborsTask(false), 1000 * Config.GRID_NEIGHBOR_TURNOFF_TIME); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/L2Attackable.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/L2Attackable.java index c085b26a34..daff9b1976 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/L2Attackable.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/L2Attackable.java @@ -257,7 +257,7 @@ public class L2Attackable extends L2Npc { _commandChannelTimer = new CommandChannelTimer(this); _commandChannelLastAttack = System.currentTimeMillis(); - ThreadPoolManager.getInstance().scheduleGeneral(_commandChannelTimer, 10000); // check for last attack + ThreadPoolManager.schedule(_commandChannelTimer, 10000); // check for last attack _firstCommandChannelAttacked.broadcastPacket(new CreatureSay(0, ChatType.PARTYROOM_ALL, "", "You have looting rights!")); // TODO: retail msg } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/L2Character.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/L2Character.java index 874c0b50ef..28c2db77a4 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/L2Character.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/L2Character.java @@ -845,7 +845,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe if (getCurrentMp() < mpConsume) { // If L2PcInstance doesn't have enough MP, stop the attack - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), 1000); + ThreadPoolManager.schedule(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), 1000); sendPacket(SystemMessageId.NOT_ENOUGH_MP); sendPacket(ActionFailed.STATIC_PACKET); return false; @@ -863,7 +863,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe else { // Cancel the action because the bow can't be re-use at this moment - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), 1000); + ThreadPoolManager.schedule(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), 1000); sendPacket(ActionFailed.STATIC_PACKET); return false; } @@ -1127,7 +1127,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe } // Notify AI with EVT_READY_TO_ACT - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), timeAtk + reuse); + ThreadPoolManager.schedule(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), timeAtk + reuse); } finally { @@ -1193,7 +1193,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe } // Create a new hit task with Medium priority - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk); + ThreadPoolManager.schedule(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk); // Calculate and set the disable delay of the bow in function of the Attack Speed _disableBowAttackEndTime = ((sAtk + reuse) / GameTimeController.MILLIS_IN_TICK) + GameTimeController.getInstance().getGameTicks(); @@ -1263,7 +1263,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe } // Create a new hit task with Medium priority - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk); + ThreadPoolManager.schedule(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk); // Calculate and set the disable delay of the bow in function of the Attack Speed _disableBowAttackEndTime = ((sAtk + reuse) / GameTimeController.MILLIS_IN_TICK) + GameTimeController.getInstance().getGameTicks(); @@ -1333,10 +1333,10 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe } // Create a new hit task with Medium priority for hit 1 - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk / 2); + ThreadPoolManager.schedule(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk / 2); // Create a new hit task with Medium priority for hit 2 with a higher delay - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, target, damage2, crit2, miss2, attack.hasSoulshot(), shld2), sAtk); + ThreadPoolManager.schedule(new HitTask(this, target, damage2, crit2, miss2, attack.hasSoulshot(), shld2), sAtk); // Add those hits to the Server-Client packet Attack attack.addHit(target, damage1, miss1, crit1, shld1); @@ -1513,7 +1513,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe } // Create a new hit task with Medium priority - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk); + ThreadPoolManager.schedule(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk); // Add this hit to the Server-Client packet Attack attack.addHit(target, damage1, miss1, crit1, shld1); @@ -1775,7 +1775,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe // queue herbs and potions if (isCastingSimultaneouslyNow() && simultaneously) { - ThreadPoolManager.getInstance().scheduleAi(() -> beginCast(skill, simultaneously, target, targets), 100); + ThreadPoolManager.schedule(() -> beginCast(skill, simultaneously, target, targets), 100); return; } @@ -1929,7 +1929,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe // Before start AI Cast Broadcast Fly Effect is Need if (skill.getFlyType() != null) { - ThreadPoolManager.getInstance().scheduleEffect(new FlyToLocationTask(this, target, skill), 50); + ThreadPoolManager.schedule(new FlyToLocationTask(this, target, skill), 50); } final MagicUseTask mut = new MagicUseTask(this, targets, skill, skillTime, simultaneously); @@ -1959,7 +1959,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe // Create a task MagicUseTask to launch the MagicSkill at the end of the casting time (skillTime) // For client animation reasons (party buffs especially) 400 ms before! - _skillCast2 = ThreadPoolManager.getInstance().scheduleEffect(mut, skillTime - 400); + _skillCast2 = ThreadPoolManager.schedule(mut, skillTime - 400); } else { @@ -1972,7 +1972,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe // Create a task MagicUseTask to launch the MagicSkill at the end of the casting time (skillTime) // For client animation reasons (party buffs especially) 400 ms before! - _skillCast = ThreadPoolManager.getInstance().scheduleEffect(mut, skillTime - 400); + _skillCast = ThreadPoolManager.schedule(mut, skillTime - 400); } } else @@ -4093,7 +4093,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe if (distFraction > 1) { - ThreadPoolManager.getInstance().executeAi(() -> + ThreadPoolManager.execute(() -> { try { @@ -4555,7 +4555,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe // Create a task to notify the AI that L2Character arrives at a check point of the movement if ((ticksToMove * GameTimeController.MILLIS_IN_TICK) > 3000) { - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_ARRIVED_REVALIDATE), 2000); + ThreadPoolManager.schedule(new NotifyAITask(this, CtrlEvent.EVT_ARRIVED_REVALIDATE), 2000); } // the CtrlEvent.EVT_ARRIVED will be sent when the character will actually arrive @@ -4636,7 +4636,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe // Create a task to notify the AI that L2Character arrives at a check point of the movement if ((ticksToMove * GameTimeController.MILLIS_IN_TICK) > 3000) { - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_ARRIVED_REVALIDATE), 2000); + ThreadPoolManager.schedule(new NotifyAITask(this, CtrlEvent.EVT_ARRIVED_REVALIDATE), 2000); } // the CtrlEvent.EVT_ARRIVED will be sent when the character will actually arrive @@ -5474,7 +5474,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe } else { - _skillCast = ThreadPoolManager.getInstance().scheduleEffect(mut, 400); + _skillCast = ThreadPoolManager.schedule(mut, 400); } } @@ -5603,11 +5603,11 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe { if (mut.isSimultaneous()) { - _skillCast2 = ThreadPoolManager.getInstance().scheduleEffect(mut, 0); + _skillCast2 = ThreadPoolManager.schedule(mut, 0); } else { - _skillCast = ThreadPoolManager.getInstance().scheduleEffect(mut, 0); + _skillCast = ThreadPoolManager.schedule(mut, 0); } } } @@ -5674,7 +5674,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe // DON'T USE : Recursive call to useMagic() method // currPlayer.useMagic(queuedSkill.getSkill(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); - ThreadPoolManager.getInstance().executeGeneral(new QueuedMagicUseTask(currPlayer, queuedSkill.getSkill(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed())); + ThreadPoolManager.execute(new QueuedMagicUseTask(currPlayer, queuedSkill.getSkill(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed())); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/L2Npc.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/L2Npc.java index a9e2d4ce79..0b2a75f139 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/L2Npc.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/L2Npc.java @@ -314,7 +314,7 @@ public class L2Npc extends L2Character // Create a RandomAnimation Task that will be launched after the calculated delay _rAniTask = new RandomAnimationTask(this); - ThreadPoolManager.getInstance().scheduleGeneral(_rAniTask, interval); + ThreadPoolManager.schedule(_rAniTask, interval); } /** @@ -1498,7 +1498,7 @@ public class L2Npc extends L2Character public L2Npc scheduleDespawn(long delay) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { if (!isDecayed()) { diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/L2Vehicle.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/L2Vehicle.java index 07949ea7c6..71bc448497 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/L2Vehicle.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/L2Vehicle.java @@ -92,7 +92,7 @@ public abstract class L2Vehicle extends L2Character { if (_engine != null) { - ThreadPoolManager.getInstance().scheduleGeneral(_engine, delay); + ThreadPoolManager.schedule(_engine, delay); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2BabyPetInstance.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2BabyPetInstance.java index 9b1d5a196a..1509f0a9d7 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2BabyPetInstance.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2BabyPetInstance.java @@ -187,7 +187,7 @@ public final class L2BabyPetInstance extends L2PetInstance { if ((_majorHeal != null) || (_buffs != null) || ((_recharge != null) && (_castTask == null) && !isDead())) { - _castTask = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new CastTask(this), 3000, 2000); + _castTask = ThreadPoolManager.scheduleAtFixedRate(new CastTask(this), 3000, 2000); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2ControllableAirShipInstance.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2ControllableAirShipInstance.java index 774109565c..f17adaffca 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2ControllableAirShipInstance.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2ControllableAirShipInstance.java @@ -257,8 +257,8 @@ public class L2ControllableAirShipInstance extends L2AirShipInstance public void onSpawn() { super.onSpawn(); - _checkTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new CheckTask(), 60000, 10000); - _consumeFuelTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new ConsumeFuelTask(), 60000, 60000); + _checkTask = ThreadPoolManager.scheduleAtFixedRate(new CheckTask(), 60000, 10000); + _consumeFuelTask = ThreadPoolManager.scheduleAtFixedRate(new ConsumeFuelTask(), 60000, 60000); } @Override @@ -330,7 +330,7 @@ public class L2ControllableAirShipInstance extends L2AirShipInstance if (isVisible() && isEmpty() && !isInDock()) { // deleteMe() can't be called from CheckTask because task should not cancel itself - ThreadPoolManager.getInstance().executeGeneral(new DecayTask()); + ThreadPoolManager.execute(new DecayTask()); } } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2CubicInstance.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2CubicInstance.java index cb88e610ad..95d423763f 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2CubicInstance.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2CubicInstance.java @@ -154,7 +154,7 @@ public final class L2CubicInstance implements IIdentifiable _skills.add(SkillData.getInstance().getSkill(5115, 4)); break; } - _disappearTask = ThreadPoolManager.getInstance().scheduleGeneral(new CubicDisappear(this), cubicDuration * 1000); // disappear + _disappearTask = ThreadPoolManager.schedule(new CubicDisappear(this), cubicDuration * 1000); // disappear } public synchronized void doAction() @@ -180,10 +180,10 @@ public final class L2CubicInstance implements IIdentifiable case SMART_CUBIC_SPECTRALMASTER: case SMART_CUBIC_EVATEMPLAR: case SMART_CUBIC_SHILLIENTEMPLAR: - _actionTask = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new CubicAction(this, _cubicSkillChance), 0, _cubicDelay); + _actionTask = ThreadPoolManager.scheduleAtFixedRate(new CubicAction(this, _cubicSkillChance), 0, _cubicDelay); break; case LIFE_CUBIC: - _actionTask = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new CubicHeal(this), 0, _cubicDelay); + _actionTask = ThreadPoolManager.scheduleAtFixedRate(new CubicHeal(this), 0, _cubicDelay); break; } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2DecoyInstance.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2DecoyInstance.java index ec0bb87f3b..8fa29ae043 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2DecoyInstance.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2DecoyInstance.java @@ -49,8 +49,8 @@ public class L2DecoyInstance extends L2Decoy _totalLifeTime = totalLifeTime; _timeRemaining = _totalLifeTime; final int skilllevel = getTemplate().getDisplayId() - 13070; - _DecoyLifeTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new DecoyLifetime(getOwner(), this), 1000, 1000); - _HateSpam = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new HateSpam(this, SkillData.getInstance().getSkill(5272, skilllevel)), 2000, 5000); + _DecoyLifeTask = ThreadPoolManager.scheduleAtFixedRate(new DecoyLifetime(getOwner(), this), 1000, 1000); + _HateSpam = ThreadPoolManager.scheduleAtFixedRate(new HateSpam(this, SkillData.getInstance().getSkill(5272, skilllevel)), 2000, 5000); } @Override diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2DoorInstance.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2DoorInstance.java index 483dfdafe5..a5ccbb4a03 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2DoorInstance.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2DoorInstance.java @@ -127,7 +127,7 @@ public class L2DoorInstance extends L2Character { delay += Rnd.get(getTemplate().getRandomTime()); } - ThreadPoolManager.getInstance().scheduleGeneral(new TimerOpen(), delay * 1000); + ThreadPoolManager.schedule(new TimerOpen(), delay * 1000); } @Override @@ -751,7 +751,7 @@ public class L2DoorInstance extends L2Character _autoCloseTask = null; oldTask.cancel(false); } - _autoCloseTask = ThreadPoolManager.getInstance().scheduleGeneral(new AutoClose(), getTemplate().getCloseTime() * 1000); + _autoCloseTask = ThreadPoolManager.schedule(new AutoClose(), getTemplate().getCloseTime() * 1000); } class AutoClose implements Runnable @@ -786,7 +786,7 @@ public class L2DoorInstance extends L2Character { delay += Rnd.get(getTemplate().getRandomTime()); } - ThreadPoolManager.getInstance().scheduleGeneral(this, delay * 1000); + ThreadPoolManager.schedule(this, delay * 1000); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2FortCommanderInstance.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2FortCommanderInstance.java index 1e5f20459e..30bd9535ce 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2FortCommanderInstance.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2FortCommanderInstance.java @@ -157,7 +157,7 @@ public class L2FortCommanderInstance extends L2DefenderInstance broadcastPacket(ns); setCanTalk(false); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleTalkTask(), 10000); + ThreadPoolManager.schedule(new ScheduleTalkTask(), 10000); } } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2PcInstance.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2PcInstance.java index 8547473059..f4721da272 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2PcInstance.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2PcInstance.java @@ -890,7 +890,7 @@ public final class L2PcInstance extends L2Playable if (_PvPRegTask == null) { - _PvPRegTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new PvPFlagTask(this), 1000, 1000); + _PvPRegTask = ThreadPoolManager.scheduleAtFixedRate(new PvPFlagTask(this), 1000, 1000); } } @@ -2842,7 +2842,7 @@ public final class L2PcInstance extends L2Playable getAI().setIntention(CtrlIntention.AI_INTENTION_REST); broadcastPacket(new ChangeWaitType(this, ChangeWaitType.WT_SITTING)); // Schedule a sit down task to wait for the animation to finish - ThreadPoolManager.getInstance().scheduleGeneral(new SitDownTask(this), 2500); + ThreadPoolManager.schedule(new SitDownTask(this), 2500); setIsParalyzed(true); } @@ -2864,7 +2864,7 @@ public final class L2PcInstance extends L2Playable broadcastPacket(new ChangeWaitType(this, ChangeWaitType.WT_STANDING)); // Schedule a stand up task to wait for the animation to finish - ThreadPoolManager.getInstance().scheduleGeneral(new StandUpTask(this), 2500); + ThreadPoolManager.schedule(new StandUpTask(this), 2500); } } @@ -4257,7 +4257,7 @@ public final class L2PcInstance extends L2Playable } if (Config.GAMEGUARD_ENFORCE) { - ThreadPoolManager.getInstance().scheduleGeneral(new GameGuardCheckTask(this), 30 * 1000); + ThreadPoolManager.schedule(new GameGuardCheckTask(this), 30 * 1000); } } @@ -9088,7 +9088,7 @@ public final class L2PcInstance extends L2Playable _inventoryDisable = val; if (val) { - ThreadPoolManager.getInstance().scheduleGeneral(new InventoryEnableTask(this), 1500); + ThreadPoolManager.schedule(new InventoryEnableTask(this), 1500); } } @@ -10308,7 +10308,7 @@ public final class L2PcInstance extends L2Playable { if (_taskWarnUserTakeBreak == null) { - _taskWarnUserTakeBreak = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new WarnUserTakeBreakTask(this), 7200000, 7200000); + _taskWarnUserTakeBreak = ThreadPoolManager.scheduleAtFixedRate(new WarnUserTakeBreakTask(this), 7200000, 7200000); } } @@ -10334,7 +10334,7 @@ public final class L2PcInstance extends L2Playable { if (_taskRentPet == null) { - _taskRentPet = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new RentPetTask(this), seconds * 1000L, seconds * 1000L); + _taskRentPet = ThreadPoolManager.scheduleAtFixedRate(new RentPetTask(this), seconds * 1000L, seconds * 1000L); } } @@ -10362,7 +10362,7 @@ public final class L2PcInstance extends L2Playable } final int timeinwater = (int) calcStat(Stats.BREATH, 60000, this, null); sendPacket(new SetupGauge(2, timeinwater)); - _taskWater = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new WaterTask(this), timeinwater, 1000); + _taskWater = ThreadPoolManager.scheduleAtFixedRate(new WaterTask(this), timeinwater, 1000); } public boolean isInWater() @@ -10723,7 +10723,7 @@ public final class L2PcInstance extends L2Playable { synchronized (this) { - _teleportWatchdog = ThreadPoolManager.getInstance().scheduleGeneral(new TeleportWatchdogTask(this), Config.TELEPORT_WATCHDOG_TIMEOUT * 1000); + _teleportWatchdog = ThreadPoolManager.schedule(new TeleportWatchdogTask(this), Config.TELEPORT_WATCHDOG_TIMEOUT * 1000); } } } @@ -11532,7 +11532,7 @@ public final class L2PcInstance extends L2Playable checkDelay = _fish.getGutsCheckTime() * 66; } } - _taskforfish = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new LookingForFishTask(this, _fish.getStartCombatTime(), _fish.getFishGuts(), _fish.getFishGroup(), isNoob, isUpperGrade), 10000, checkDelay); + _taskforfish = ThreadPoolManager.scheduleAtFixedRate(new LookingForFishTask(this, _fish.getStartCombatTime(), _fish.getFishGuts(), _fish.getFishGroup(), isNoob, isUpperGrade), 10000, checkDelay); } } @@ -12067,7 +12067,7 @@ public final class L2PcInstance extends L2Playable } if (_fameTask == null) { - _fameTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FameTask(this, fameFixRate), delay, delay); + _fameTask = ThreadPoolManager.scheduleAtFixedRate(new FameTask(this, fameFixRate), delay, delay); } } @@ -12085,7 +12085,7 @@ public final class L2PcInstance extends L2Playable { if (Config.ENABLE_VITALITY && (_vitalityTask == null)) { - _vitalityTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new VitalityTask(this), 1000, 60000); + _vitalityTask = ThreadPoolManager.scheduleAtFixedRate(new VitalityTask(this), 1000, 60000); } } @@ -12205,7 +12205,7 @@ public final class L2PcInstance extends L2Playable _soulTask.cancel(false); _soulTask = null; } - _soulTask = ThreadPoolManager.getInstance().scheduleGeneral(new ResetSoulsTask(this), 600000); + _soulTask = ThreadPoolManager.schedule(new ResetSoulsTask(this), 600000); } /** @@ -12505,7 +12505,7 @@ public final class L2PcInstance extends L2Playable sendPacket(new SetupGauge(3, (getCurrentFeed() * 10000) / getFeedConsume(), (getMaxFeed() * 10000) / getFeedConsume())); if (!isDead()) { - _mountFeedTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new PetFeedTask(this), 10000, 10000); + _mountFeedTask = ThreadPoolManager.scheduleAtFixedRate(new PetFeedTask(this), 10000, 10000); } } else if (_canFeed) @@ -12515,7 +12515,7 @@ public final class L2PcInstance extends L2Playable sendPacket(sg); if (!isDead()) { - _mountFeedTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new PetFeedTask(this), 10000, 10000); + _mountFeedTask = ThreadPoolManager.scheduleAtFixedRate(new PetFeedTask(this), 10000, 10000); } } } @@ -12579,7 +12579,7 @@ public final class L2PcInstance extends L2Playable public void enteredNoLanding(int delay) { - _dismountTask = ThreadPoolManager.getInstance().scheduleGeneral(new DismountTask(this), delay * 1000); + _dismountTask = ThreadPoolManager.schedule(new DismountTask(this), delay * 1000); } public void exitedNoLanding() @@ -12723,7 +12723,7 @@ public final class L2PcInstance extends L2Playable _chargeTask.cancel(false); } } - _chargeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ResetChargesTask(this), 600000); + _chargeTask = ThreadPoolManager.schedule(new ResetChargesTask(this), 600000); } /** @@ -13836,7 +13836,7 @@ public final class L2PcInstance extends L2Playable startNevitHourglassTask(); // Create task to give new recommendations - _recoGiveTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new RecoGiveTask(this), 7200000, 3600000); + _recoGiveTask = ThreadPoolManager.scheduleAtFixedRate(new RecoGiveTask(this), 7200000, 3600000); // Store new data storeRecommendations(false); @@ -13852,7 +13852,7 @@ public final class L2PcInstance extends L2Playable if (taskTime > 0) { // If player have some timeleft, start bonus task - _nevitHourglassTask = ThreadPoolManager.getInstance().scheduleGeneral(new RecoBonusTaskEnd(this), taskTime); + _nevitHourglassTask = ThreadPoolManager.schedule(new RecoBonusTaskEnd(this), taskTime); } sendPacket(new ExVoteSystemInfo(this)); } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2PetInstance.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2PetInstance.java index 7088f35367..41029b2077 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2PetInstance.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2PetInstance.java @@ -1100,7 +1100,7 @@ public class L2PetInstance extends L2Summon stopFeed(); if (!isDead() && (getOwner().getSummon() == this)) { - _feedTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FeedTask(), 10000, 10000); + _feedTask = ThreadPoolManager.scheduleAtFixedRate(new FeedTask(), 10000, 10000); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2RaceManagerInstance.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2RaceManagerInstance.java index 7355fd8edb..8295ef0c4c 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2RaceManagerInstance.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2RaceManagerInstance.java @@ -103,27 +103,26 @@ public class L2RaceManagerInstance extends L2Npc _managers = new ArrayList<>(); - final ThreadPoolManager s = ThreadPoolManager.getInstance(); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKETS_ARE_NOW_AVAILABLE_FOR_MONSTER_RACE_S1), 0, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.NOW_SELLING_TICKETS_FOR_MONSTER_RACE_S1), 30 * SECOND, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKETS_ARE_NOW_AVAILABLE_FOR_MONSTER_RACE_S1), MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.NOW_SELLING_TICKETS_FOR_MONSTER_RACE_S1), MINUTE + (30 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 2 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 3 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 4 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 5 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 6 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKETS_SALES_ARE_CLOSED_FOR_MONSTER_RACE_S1_ODDS_ARE_POSTED), 7 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S2_WILL_BEGIN_IN_S1_MINUTE_S), 7 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S2_WILL_BEGIN_IN_S1_MINUTE_S), 8 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S1_WILL_BEGIN_IN_30_SECONDS), (8 * MINUTE) + (30 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S1_IS_ABOUT_TO_BEGIN_COUNTDOWN_IN_FIVE_SECONDS), (8 * MINUTE) + (50 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (55 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (56 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (57 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (58 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (59 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.THEY_RE_OFF), 9 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKETS_ARE_NOW_AVAILABLE_FOR_MONSTER_RACE_S1), 0, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.NOW_SELLING_TICKETS_FOR_MONSTER_RACE_S1), 30 * SECOND, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKETS_ARE_NOW_AVAILABLE_FOR_MONSTER_RACE_S1), MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.NOW_SELLING_TICKETS_FOR_MONSTER_RACE_S1), MINUTE + (30 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 2 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 3 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 4 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 5 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 6 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKETS_SALES_ARE_CLOSED_FOR_MONSTER_RACE_S1_ODDS_ARE_POSTED), 7 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S2_WILL_BEGIN_IN_S1_MINUTE_S), 7 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S2_WILL_BEGIN_IN_S1_MINUTE_S), 8 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S1_WILL_BEGIN_IN_30_SECONDS), (8 * MINUTE) + (30 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S1_IS_ABOUT_TO_BEGIN_COUNTDOWN_IN_FIVE_SECONDS), (8 * MINUTE) + (50 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (55 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (56 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (57 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (58 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (59 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.THEY_RE_OFF), 9 * MINUTE, 10 * MINUTE); } _managers.add(this); } @@ -242,7 +241,7 @@ public class L2RaceManagerInstance extends L2Npc _packet = new MonRaceInfo(_codes[1][0], _codes[1][1], race.getMonsters(), race.getSpeeds()); sendMonsterInfo(); - ThreadPoolManager.getInstance().scheduleGeneral(new RunRace(), 5000); + ThreadPoolManager.schedule(new RunRace(), 5000); } else { @@ -519,7 +518,7 @@ public class L2RaceManagerInstance extends L2Npc { _packet = new MonRaceInfo(_codes[2][0], _codes[2][1], MonsterRace.getInstance().getMonsters(), MonsterRace.getInstance().getSpeeds()); sendMonsterInfo(); - ThreadPoolManager.getInstance().scheduleGeneral(new RunEnd(), 30000); + ThreadPoolManager.schedule(new RunEnd(), 30000); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2RaidBossInstance.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2RaidBossInstance.java index b4ed1dca60..f8ae4d77ac 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2RaidBossInstance.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2RaidBossInstance.java @@ -108,7 +108,7 @@ public class L2RaidBossInstance extends L2MonsterInstance @Override protected void startMaintenanceTask() { - _maintenanceTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(() -> checkAndReturnToSpawn(), 60000, getMaintenanceInterval() + Rnd.get(5000)); + _maintenanceTask = ThreadPoolManager.scheduleAtFixedRate(() -> checkAndReturnToSpawn(), 60000, getMaintenanceInterval() + Rnd.get(5000)); } protected void checkAndReturnToSpawn() diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2SepulcherMonsterInstance.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2SepulcherMonsterInstance.java index 6e3784b8ec..15a21c9c94 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2SepulcherMonsterInstance.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2SepulcherMonsterInstance.java @@ -78,12 +78,12 @@ public class L2SepulcherMonsterInstance extends L2MonsterInstance { _victimSpawnKeyBoxTask.cancel(true); } - _victimSpawnKeyBoxTask = ThreadPoolManager.getInstance().scheduleEffect(new VictimSpawnKeyBox(this), 300000); + _victimSpawnKeyBoxTask = ThreadPoolManager.schedule(new VictimSpawnKeyBox(this), 300000); if (_victimShout != null) { _victimShout.cancel(true); } - _victimShout = ThreadPoolManager.getInstance().scheduleEffect(new VictimShout(this), 5000); + _victimShout = ThreadPoolManager.schedule(new VictimShout(this), 5000); break; case 18196: case 18197: @@ -120,7 +120,7 @@ public class L2SepulcherMonsterInstance extends L2MonsterInstance { _changeImmortalTask.cancel(true); } - _changeImmortalTask = ThreadPoolManager.getInstance().scheduleEffect(new ChangeImmortal(this), 1600); + _changeImmortalTask = ThreadPoolManager.schedule(new ChangeImmortal(this), 1600); break; case 18256: @@ -180,7 +180,7 @@ public class L2SepulcherMonsterInstance extends L2MonsterInstance { _onDeadEventTask.cancel(true); } - _onDeadEventTask = ThreadPoolManager.getInstance().scheduleEffect(new OnDeadEvent(this), 3500); + _onDeadEventTask = ThreadPoolManager.schedule(new OnDeadEvent(this), 3500); break; case 18150: @@ -205,7 +205,7 @@ public class L2SepulcherMonsterInstance extends L2MonsterInstance { _onDeadEventTask.cancel(true); } - _onDeadEventTask = ThreadPoolManager.getInstance().scheduleEffect(new OnDeadEvent(this), 3500); + _onDeadEventTask = ThreadPoolManager.schedule(new OnDeadEvent(this), 3500); break; case 18141: @@ -222,7 +222,7 @@ public class L2SepulcherMonsterInstance extends L2MonsterInstance { _onDeadEventTask.cancel(true); } - _onDeadEventTask = ThreadPoolManager.getInstance().scheduleEffect(new OnDeadEvent(this), 3500); + _onDeadEventTask = ThreadPoolManager.schedule(new OnDeadEvent(this), 3500); } break; @@ -253,7 +253,7 @@ public class L2SepulcherMonsterInstance extends L2MonsterInstance { _onDeadEventTask.cancel(true); } - _onDeadEventTask = ThreadPoolManager.getInstance().scheduleEffect(new OnDeadEvent(this), 3500); + _onDeadEventTask = ThreadPoolManager.schedule(new OnDeadEvent(this), 3500); } break; @@ -266,7 +266,7 @@ public class L2SepulcherMonsterInstance extends L2MonsterInstance { _onDeadEventTask.cancel(true); } - _onDeadEventTask = ThreadPoolManager.getInstance().scheduleEffect(new OnDeadEvent(this), 8500); + _onDeadEventTask = ThreadPoolManager.schedule(new OnDeadEvent(this), 8500); break; } return true; diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2SepulcherNpcInstance.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2SepulcherNpcInstance.java index c0f34825f9..1a951c75be 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2SepulcherNpcInstance.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2SepulcherNpcInstance.java @@ -212,7 +212,7 @@ public class L2SepulcherNpcInstance extends L2Npc { _spawnMonsterTask.cancel(true); } - _spawnMonsterTask = ThreadPoolManager.getInstance().scheduleEffect(new SpawnMonster(getId()), 3500); + _spawnMonsterTask = ThreadPoolManager.schedule(new SpawnMonster(getId()), 3500); break; } case 31455: @@ -367,12 +367,12 @@ public class L2SepulcherNpcInstance extends L2Npc { _closeTask.cancel(true); } - _closeTask = ThreadPoolManager.getInstance().scheduleEffect(new CloseNextDoor(doorId), 10000); + _closeTask = ThreadPoolManager.schedule(new CloseNextDoor(doorId), 10000); if (_spawnNextMysteriousBoxTask != null) { _spawnNextMysteriousBoxTask.cancel(true); } - _spawnNextMysteriousBoxTask = ThreadPoolManager.getInstance().scheduleEffect(new SpawnNextMysteriousBox(npcId), 0); + _spawnNextMysteriousBoxTask = ThreadPoolManager.schedule(new SpawnNextMysteriousBox(npcId), 0); } private static class CloseNextDoor implements Runnable diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2ServitorInstance.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2ServitorInstance.java index 217bdbbcdd..5b0c30bb94 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2ServitorInstance.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2ServitorInstance.java @@ -79,7 +79,7 @@ public class L2ServitorInstance extends L2Summon implements Runnable super.onSpawn(); if (_summonLifeTask == null) { - _summonLifeTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this, 0, 5000); + _summonLifeTask = ThreadPoolManager.scheduleAtFixedRate(this, 0, 5000); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2SiegeFlagInstance.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2SiegeFlagInstance.java index 703303e620..9b94c5d479 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2SiegeFlagInstance.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2SiegeFlagInstance.java @@ -201,7 +201,7 @@ public class L2SiegeFlagInstance extends L2Npc // send warning to owners of headquarters that theirs base is under attack _clan.broadcastToOnlineMembers(SystemMessage.getSystemMessage(SystemMessageId.YOUR_BASE_IS_BEING_ATTACKED)); setCanTalk(false); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleTalkTask(), 20000); + ThreadPoolManager.schedule(new ScheduleTalkTask(), 20000); } } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2TamedBeastInstance.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2TamedBeastInstance.java index 45bf1f096c..aea7027cc8 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2TamedBeastInstance.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2TamedBeastInstance.java @@ -152,7 +152,7 @@ public final class L2TamedBeastInstance extends L2FeedableBeastInstance { _durationCheckTask.cancel(true); } - _durationCheckTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new CheckDuration(this), DURATION_CHECK_INTERVAL, DURATION_CHECK_INTERVAL); + _durationCheckTask = ThreadPoolManager.scheduleAtFixedRate(new CheckDuration(this), DURATION_CHECK_INTERVAL, DURATION_CHECK_INTERVAL); } } @@ -216,10 +216,10 @@ public final class L2TamedBeastInstance extends L2FeedableBeastInstance int delay = 100; for (Skill skill : _beastSkills) { - ThreadPoolManager.getInstance().scheduleGeneral(new buffCast(skill), delay); + ThreadPoolManager.schedule(new buffCast(skill), delay); delay += (100 + skill.getHitTime()); } - ThreadPoolManager.getInstance().scheduleGeneral(new buffCast(null), delay); + ThreadPoolManager.schedule(new buffCast(null), delay); } private class buffCast implements Runnable @@ -283,7 +283,7 @@ public final class L2TamedBeastInstance extends L2FeedableBeastInstance { _buffTask.cancel(true); } - _buffTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new CheckOwnerBuffs(this, totalBuffsAvailable), BUFF_INTERVAL, BUFF_INTERVAL); + _buffTask = ThreadPoolManager.scheduleAtFixedRate(new CheckOwnerBuffs(this, totalBuffsAvailable), BUFF_INTERVAL, BUFF_INTERVAL); } } else diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2TrapInstance.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2TrapInstance.java index edb79be0e1..dff913afb1 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2TrapInstance.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/instance/L2TrapInstance.java @@ -84,7 +84,7 @@ public final class L2TrapInstance extends L2Npc _remainingTime = _lifeTime; if (_skill != null) { - _trapTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new TrapTask(this), TICK, TICK); + _trapTask = ThreadPoolManager.scheduleAtFixedRate(new TrapTask(this), TICK, TICK); } } @@ -409,7 +409,7 @@ public final class L2TrapInstance extends L2Npc EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); - ThreadPoolManager.getInstance().scheduleGeneral(new TrapTriggerTask(this), 500); + ThreadPoolManager.schedule(new TrapTriggerTask(this), 500); } public void unSummon() diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/knownlist/NpcKnownList.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/knownlist/NpcKnownList.java index 03ac755858..5b03b0439f 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/knownlist/NpcKnownList.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/knownlist/NpcKnownList.java @@ -101,7 +101,7 @@ public class NpcKnownList extends CharKnownList { if ((_trackingTask == null) && (getActiveChar().getAggroRange() > 0)) { - _trackingTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new TrackingTask(), 2000, 2000); + _trackingTask = ThreadPoolManager.scheduleAtFixedRate(new TrackingTask(), 2000, 2000); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/status/CharStatus.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/status/CharStatus.java index a51d0535c3..898ac9bf06 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/status/CharStatus.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/status/CharStatus.java @@ -206,7 +206,7 @@ public class CharStatus final int period = Formulas.getRegeneratePeriod(getActiveChar()); // Create the HP/MP/CP Regeneration task - _regTask = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new RegenTask(), period, period); + _regTask = ThreadPoolManager.scheduleAtFixedRate(new RegenTask(), period, period); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/tasks/attackable/CommandChannelTimer.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/tasks/attackable/CommandChannelTimer.java index 4702f1bf1a..d5afd42fd6 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/tasks/attackable/CommandChannelTimer.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/tasks/attackable/CommandChannelTimer.java @@ -48,7 +48,7 @@ public final class CommandChannelTimer implements Runnable } else { - ThreadPoolManager.getInstance().scheduleGeneral(this, 10000); // 10sec + ThreadPoolManager.schedule(this, 10000); // 10sec } } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/tasks/npc/trap/TrapTriggerTask.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/tasks/npc/trap/TrapTriggerTask.java index d58d48c9b2..53aa3266d0 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/tasks/npc/trap/TrapTriggerTask.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/actor/tasks/npc/trap/TrapTriggerTask.java @@ -38,7 +38,7 @@ public class TrapTriggerTask implements Runnable try { _trap.doCast(_trap.getSkill()); - ThreadPoolManager.getInstance().scheduleGeneral(new TrapUnsummonTask(_trap), _trap.getSkill().getHitTime() + 300); + ThreadPoolManager.schedule(new TrapUnsummonTask(_trap), _trap.getSkill().getHitTime() + 300); } catch (Exception e) { diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/announce/AutoAnnouncement.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/announce/AutoAnnouncement.java index dc3411072e..6555a5f8dc 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/announce/AutoAnnouncement.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/announce/AutoAnnouncement.java @@ -160,7 +160,7 @@ public final class AutoAnnouncement extends Announcement implements Runnable _task.cancel(false); } _currentState = _repeat; - _task = ThreadPoolManager.getInstance().scheduleGeneral(this, _initial); + _task = ThreadPoolManager.schedule(this, _initial); } @Override @@ -178,6 +178,6 @@ public final class AutoAnnouncement extends Announcement implements Runnable { _currentState--; } - _task = ThreadPoolManager.getInstance().scheduleGeneral(this, _delay); + _task = ThreadPoolManager.schedule(this, _delay); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/buylist/Product.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/buylist/Product.java index 1321bc4e99..4026634f99 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/buylist/Product.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/buylist/Product.java @@ -113,7 +113,7 @@ public final class Product } if ((_restockTask == null) || _restockTask.isDone()) { - _restockTask = ThreadPoolManager.getInstance().scheduleGeneral(new RestockTask(), getRestockDelay()); + _restockTask = ThreadPoolManager.schedule(new RestockTask(), getRestockDelay()); } final boolean result = _count.addAndGet(-val) >= 0; save(); @@ -130,7 +130,7 @@ public final class Product final long remainTime = nextRestockTime - System.currentTimeMillis(); if (remainTime > 0) { - _restockTask = ThreadPoolManager.getInstance().scheduleGeneral(new RestockTask(), remainTime); + _restockTask = ThreadPoolManager.schedule(new RestockTask(), remainTime); } else { diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Auction.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Auction.java index 5a79e09739..b6f2017849 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Auction.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Auction.java @@ -235,7 +235,7 @@ public class Auction { taskDelay = _endDate - currentTime; } - ThreadPoolManager.getInstance().scheduleGeneral(new AutoEndTask(), taskDelay); + ThreadPoolManager.schedule(new AutoEndTask(), taskDelay); } public static String getItemTypeName(AuctionItemType value) @@ -470,7 +470,7 @@ public class Auction else { /** Task waiting ClanHallManager is loaded every 3s */ - ThreadPoolManager.getInstance().scheduleGeneral(new AutoEndTask(), 3000); + ThreadPoolManager.schedule(new AutoEndTask(), 3000); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/BlockCheckerEngine.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/BlockCheckerEngine.java index 84a42a05b0..507363fb69 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/BlockCheckerEngine.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/BlockCheckerEngine.java @@ -304,7 +304,7 @@ public final class BlockCheckerEngine _abnormalEnd = true; - ThreadPoolManager.getInstance().executeGeneral(new EndEvent()); + ThreadPoolManager.execute(new EndEvent()); if (Config.DEBUG) { @@ -426,7 +426,7 @@ public final class BlockCheckerEngine } _isStarted = true; // Spawn the blocks - ThreadPoolManager.getInstance().executeGeneral(new SpawnRound(16, 1)); + ThreadPoolManager.execute(new SpawnRound(16, 1)); // Start up player parameters setUpPlayers(); // Set the started time @@ -460,17 +460,17 @@ public final class BlockCheckerEngine { case 1: // Schedule second spawn round { - _task = ThreadPoolManager.getInstance().scheduleGeneral(new SpawnRound(20, 2), 60000); + _task = ThreadPoolManager.schedule(new SpawnRound(20, 2), 60000); break; } case 2: // Schedule third spawn round { - _task = ThreadPoolManager.getInstance().scheduleGeneral(new SpawnRound(14, 3), 60000); + _task = ThreadPoolManager.schedule(new SpawnRound(14, 3), 60000); break; } case 3: // Schedule Event End Count Down { - _task = ThreadPoolManager.getInstance().scheduleGeneral(new EndEvent(), 180000); + _task = ThreadPoolManager.schedule(new EndEvent(), 180000); break; } } @@ -521,7 +521,7 @@ public final class BlockCheckerEngine SpawnTable.getInstance().addNewSpawn(girlSpawn, false); girlSpawn.init(); // Schedule his deletion after 9 secs of spawn - ThreadPoolManager.getInstance().scheduleGeneral(new CarryingGirlUnspawn(girlSpawn), 9000); + ThreadPoolManager.schedule(new CarryingGirlUnspawn(girlSpawn), 9000); } catch (Exception e) { @@ -562,7 +562,7 @@ public final class BlockCheckerEngine /* * private class CountDown implements Runnable { - * @Override public void run() { _holder.broadCastPacketToTeam(SystemMessage.getSystemMessage(SystemMessageId.BLOCK_CHECKER_ENDS_5)); ThreadPoolManager.getInstance().scheduleGeneral(new EndEvent(), 5000); } } + * @Override public void run() { _holder.broadCastPacketToTeam(SystemMessage.getSystemMessage(SystemMessageId.BLOCK_CHECKER_ENDS_5)); ThreadPoolManager.schedule(new EndEvent(), 5000); } } */ /** diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Castle.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Castle.java index 5d8ec0dd99..28b3db4c8d 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Castle.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Castle.java @@ -158,11 +158,11 @@ public final class Castle extends AbstractResidence final long currentTime = System.currentTimeMillis(); if (_endDate > currentTime) { - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(cwh), _endDate - currentTime); + ThreadPoolManager.schedule(new FunctionTask(cwh), _endDate - currentTime); } else { - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(cwh), 0); + ThreadPoolManager.schedule(new FunctionTask(cwh), 0); } } @@ -196,7 +196,7 @@ public final class Castle extends AbstractResidence { ClanTable.getInstance().getClan(getOwnerId()).getWarehouse().destroyItemByItemId("CS_function_fee", Inventory.ADENA_ID, fee, null, null); } - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(true), getRate()); + ThreadPoolManager.schedule(new FunctionTask(true), getRate()); } else { diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/ClanHall.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/ClanHall.java index 80d3969945..ce40169c6b 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/ClanHall.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/ClanHall.java @@ -131,11 +131,11 @@ public abstract class ClanHall final long currentTime = System.currentTimeMillis(); if (_endDate > currentTime) { - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(cwh), _endDate - currentTime); + ThreadPoolManager.schedule(new FunctionTask(cwh), _endDate - currentTime); } else { - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(cwh), 0); + ThreadPoolManager.schedule(new FunctionTask(cwh), 0); } } @@ -164,7 +164,7 @@ public abstract class ClanHall { ClanTable.getInstance().getClan(getOwnerId()).getWarehouse().destroyItemByItemId("CH_function_fee", Inventory.ADENA_ID, fee, null, null); } - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(true), getRate()); + ThreadPoolManager.schedule(new FunctionTask(true), getRate()); } else { diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/DimensionalRift.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/DimensionalRift.java index a16089a069..f7eb05a223 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/DimensionalRift.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/DimensionalRift.java @@ -173,7 +173,7 @@ public class DimensionalRift final long jumpTime = calcTimeToNextJump(); teleporterTimer.schedule(teleporterTimerTask, jumpTime); // Teleporter task, 8-10 minutes - earthQuakeTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> + earthQuakeTask = ThreadPoolManager.schedule(() -> { for (L2PcInstance p : _party.getMembers()) { diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Duel.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Duel.java index 99bce70d7b..ed069aa4cb 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Duel.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Duel.java @@ -98,7 +98,7 @@ public class Duel broadcastToTeam2(sm); } // Schedule duel start - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartDuelTask(this), 3000); + ThreadPoolManager.schedule(new ScheduleStartDuelTask(this), 3000); } public static class PlayerCondition @@ -206,14 +206,14 @@ public class Duel } case Continue: { - ThreadPoolManager.getInstance().scheduleGeneral(this, 1000); + ThreadPoolManager.schedule(this, 1000); break; } default: { setFinished(true); playKneelAnimation(); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndDuelTask(_duel, _duel.checkEndDuelCondition()), 5000); + ThreadPoolManager.schedule(new ScheduleEndDuelTask(_duel, _duel.checkEndDuelCondition()), 5000); InstanceManager.getInstance().destroyInstance(_duel.getDueldInstanceId()); break; } @@ -251,11 +251,11 @@ public class Duel _duel.teleportPlayers(); // give players 20 seconds to complete teleport and get ready (its ought to be 30 on official..) - ThreadPoolManager.getInstance().scheduleGeneral(this, _duel.isPartyDuel() ? 20000 : 1); + ThreadPoolManager.schedule(this, _duel.isPartyDuel() ? 20000 : 1); } else if (count > 0) // duel not started yet - continue countdown { - ThreadPoolManager.getInstance().scheduleGeneral(this, 1000); + ThreadPoolManager.schedule(this, 1000); } else { @@ -462,7 +462,7 @@ public class Duel broadcastToTeam2(B04_S01); // start dueling task - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleDuelTask(this), 1000); + ThreadPoolManager.schedule(new ScheduleDuelTask(this), 1000); } /** diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Fort.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Fort.java index b0fdc3321b..45c9c89add 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Fort.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Fort.java @@ -166,11 +166,11 @@ public final class Fort extends AbstractResidence final long currentTime = System.currentTimeMillis(); if (_endDate > currentTime) { - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(cwh), _endDate - currentTime); + ThreadPoolManager.schedule(new FunctionTask(cwh), _endDate - currentTime); } else { - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(cwh), 0); + ThreadPoolManager.schedule(new FunctionTask(cwh), 0); } } @@ -199,7 +199,7 @@ public final class Fort extends AbstractResidence { getOwnerClan().getWarehouse().destroyItemByItemId("CS_function_fee", Inventory.ADENA_ID, fee, null, null); } - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(true), getRate()); + ThreadPoolManager.schedule(new FunctionTask(true), getRate()); } else { @@ -268,7 +268,7 @@ public final class Fort extends AbstractResidence public void endOfSiege(L2Clan clan) { - ThreadPoolManager.getInstance().executeAi(new endFortressSiege(this, clan)); + ThreadPoolManager.execute(new endFortressSiege(this, clan)); } /** @@ -587,15 +587,15 @@ public final class Fort extends AbstractResidence initial = (Config.FS_UPDATE_FRQ * 60000L) - initial; if ((Config.FS_MAX_OWN_TIME <= 0) || (getOwnedTime() < (Config.FS_MAX_OWN_TIME * 3600))) { - _FortUpdater[0] = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FortUpdater(this, clan, runCount, UpdaterType.PERIODIC_UPDATE), initial, Config.FS_UPDATE_FRQ * 60000L); // Schedule owner tasks to start running + _FortUpdater[0] = ThreadPoolManager.scheduleAtFixedRate(new FortUpdater(this, clan, runCount, UpdaterType.PERIODIC_UPDATE), initial, Config.FS_UPDATE_FRQ * 60000L); // Schedule owner tasks to start running if (Config.FS_MAX_OWN_TIME > 0) { - _FortUpdater[1] = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FortUpdater(this, clan, runCount, UpdaterType.MAX_OWN_TIME), 3600000, 3600000); // Schedule owner tasks to remove owener + _FortUpdater[1] = ThreadPoolManager.scheduleAtFixedRate(new FortUpdater(this, clan, runCount, UpdaterType.MAX_OWN_TIME), 3600000, 3600000); // Schedule owner tasks to remove owener } } else { - _FortUpdater[1] = ThreadPoolManager.getInstance().scheduleGeneral(new FortUpdater(this, clan, 0, UpdaterType.MAX_OWN_TIME), 60000); // Schedule owner tasks to remove owner + _FortUpdater[1] = ThreadPoolManager.schedule(new FortUpdater(this, clan, 0, UpdaterType.MAX_OWN_TIME), 60000); // Schedule owner tasks to remove owner } } else @@ -820,10 +820,10 @@ public final class Fort extends AbstractResidence { _FortUpdater[1].cancel(false); } - _FortUpdater[0] = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FortUpdater(this, clan, 0, UpdaterType.PERIODIC_UPDATE), Config.FS_UPDATE_FRQ * 60000L, Config.FS_UPDATE_FRQ * 60000L); // Schedule owner tasks to start running + _FortUpdater[0] = ThreadPoolManager.scheduleAtFixedRate(new FortUpdater(this, clan, 0, UpdaterType.PERIODIC_UPDATE), Config.FS_UPDATE_FRQ * 60000L, Config.FS_UPDATE_FRQ * 60000L); // Schedule owner tasks to start running if (Config.FS_MAX_OWN_TIME > 0) { - _FortUpdater[1] = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FortUpdater(this, clan, 0, UpdaterType.MAX_OWN_TIME), 3600000, 3600000); // Schedule owner tasks to remove owener + _FortUpdater[1] = ThreadPoolManager.scheduleAtFixedRate(new FortUpdater(this, clan, 0, UpdaterType.MAX_OWN_TIME), 3600000, 3600000); // Schedule owner tasks to remove owener } } else diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/FortSiege.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/FortSiege.java index 3b041f98a0..71b0da53d3 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/FortSiege.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/FortSiege.java @@ -112,7 +112,7 @@ public class FortSiege implements Siegable final SystemMessage sm; if (_time == 3600) // 1hr remains { - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(600), 3000000); // Prepare task for 10 minutes left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(600), 3000000); // Prepare task for 10 minutes left. } else if (_time == 600) // 10min remains { @@ -120,49 +120,49 @@ public class FortSiege implements Siegable sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(10); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(300), 300000); // Prepare task for 5 minutes left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(300), 300000); // Prepare task for 5 minutes left. } else if (_time == 300) // 5min remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(5); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(60), 240000); // Prepare task for 1 minute left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(60), 240000); // Prepare task for 1 minute left. } else if (_time == 60) // 1min remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(1); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(30), 30000); // Prepare task for 30 seconds left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(30), 30000); // Prepare task for 30 seconds left. } else if (_time == 30) // 30seconds remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_SECOND_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(30); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(10), 20000); // Prepare task for 10 seconds left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(10), 20000); // Prepare task for 10 seconds left. } else if (_time == 10) // 10seconds remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_SECOND_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(10); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(5), 5000); // Prepare task for 5 seconds left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(5), 5000); // Prepare task for 5 seconds left. } else if (_time == 5) // 5seconds remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_SECOND_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(5); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(1), 4000); // Prepare task for 1 seconds left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(1), 4000); // Prepare task for 1 seconds left. } else if (_time == 1) // 1seconds remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_SECOND_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(1); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(0), 1000); // Prepare task start siege. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(0), 1000); // Prepare task start siege. } else if (_time == 0)// start siege { @@ -274,7 +274,7 @@ public class FortSiege implements Siegable getSiegeGuardManager().unspawnSiegeGuard(); // Remove all spawned siege guard from this fort getFort().resetDoors(); // Respawn door to fort - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleSuspiciousMerchantSpawn(), FortSiegeManager.getInstance().getSuspiciousMerchantRespawnDelay() * 60 * 1000L); // Prepare 3hr task for suspicious merchant respawn + ThreadPoolManager.schedule(new ScheduleSuspiciousMerchantSpawn(), FortSiegeManager.getInstance().getSuspiciousMerchantRespawnDelay() * 60 * 1000L); // Prepare 3hr task for suspicious merchant respawn setSiegeDateTime(true); // store suspicious merchant spawn in DB if (_siegeEnd != null) @@ -338,7 +338,7 @@ public class FortSiege implements Siegable getFort().getZone().updateZoneStatusForCharactersInside(); // Schedule a task to prepare auto siege end - _siegeEnd = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(), FortSiegeManager.getInstance().getSiegeLength() * 60 * 1000L); // Prepare auto end task + _siegeEnd = ThreadPoolManager.schedule(new ScheduleEndSiegeTask(), FortSiegeManager.getInstance().getSiegeLength() * 60 * 1000L); // Prepare auto end task final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THE_FORTRESS_BATTLE_S1_HAS_BEGUN); sm.addCastleId(getFort().getResidenceId()); @@ -664,7 +664,7 @@ public class FortSiege implements Siegable getFort().getSiege().announceToPlayer(SystemMessage.getSystemMessage(SystemMessageId.THE_BARRACKS_HAVE_BEEN_SEIZED)); if (_siegeRestore == null) { - _siegeRestore = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleSiegeRestore(), FortSiegeManager.getInstance().getCountDownLength() * 60 * 1000L); + _siegeRestore = ThreadPoolManager.schedule(new ScheduleSiegeRestore(), FortSiegeManager.getInstance().getCountDownLength() * 60 * 1000L); } } } @@ -828,7 +828,7 @@ public class FortSiege implements Siegable saveFortSiege(); clearSiegeClan(); // remove all clans // spawn suspicious merchant immediately - ThreadPoolManager.getInstance().executeGeneral(new ScheduleSuspiciousMerchantSpawn()); + ThreadPoolManager.execute(new ScheduleSuspiciousMerchantSpawn()); } else { @@ -836,33 +836,33 @@ public class FortSiege implements Siegable if (getAttackerClans().isEmpty()) { // no attackers - waiting for suspicious merchant spawn - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleSuspiciousMerchantSpawn(), delay); + ThreadPoolManager.schedule(new ScheduleSuspiciousMerchantSpawn(), delay); } else { // preparing start siege task if (delay > 3600000) // more than hour, how this can happens ? spawn suspicious merchant { - ThreadPoolManager.getInstance().executeGeneral(new ScheduleSuspiciousMerchantSpawn()); - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(3600), delay - 3600000); + ThreadPoolManager.execute(new ScheduleSuspiciousMerchantSpawn()); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(3600), delay - 3600000); } if (delay > 600000) // more than 10 min, spawn suspicious merchant { - ThreadPoolManager.getInstance().executeGeneral(new ScheduleSuspiciousMerchantSpawn()); - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(600), delay - 600000); + ThreadPoolManager.execute(new ScheduleSuspiciousMerchantSpawn()); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(600), delay - 600000); } else if (delay > 300000) { - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(300), delay - 300000); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(300), delay - 300000); } else if (delay > 60000) { - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(60), delay - 60000); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(60), delay - 60000); } else { // lower than 1 min, set to 1 min - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(60), 0); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(60), 0); } _log.info("Siege of " + getFort().getName() + " fort: " + getFort().getSiegeDate().getTime()); @@ -892,7 +892,7 @@ public class FortSiege implements Siegable } // Execute siege auto start - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(3600), 0); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(3600), 0); } /** diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Instance.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Instance.java index bde74cf01a..ee36c76dfc 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Instance.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Instance.java @@ -197,7 +197,7 @@ public final class Instance _checkTimeUpTask.cancel(true); } - _checkTimeUpTask = ThreadPoolManager.getInstance().scheduleGeneral(new CheckTimeUp(duration), 500); + _checkTimeUpTask = ThreadPoolManager.schedule(new CheckTimeUp(duration), 500); _instanceEndTime = System.currentTimeMillis() + duration + 500; } @@ -494,7 +494,7 @@ public final class Instance a = n.getAttributes().getNamedItem("val"); if (a != null) { - _checkTimeUpTask = ThreadPoolManager.getInstance().scheduleGeneral(new CheckTimeUp(Integer.parseInt(a.getNodeValue()) * 60000), 15000); + _checkTimeUpTask = ThreadPoolManager.schedule(new CheckTimeUp(Integer.parseInt(a.getNodeValue()) * 60000), 15000); _instanceEndTime = System.currentTimeMillis() + (Long.parseLong(a.getNodeValue()) * 60000) + 15000; } break; @@ -845,11 +845,11 @@ public final class Instance cancelTimer(); if (remaining >= 10000) { - _checkTimeUpTask = ThreadPoolManager.getInstance().scheduleGeneral(new CheckTimeUp(remaining), interval); + _checkTimeUpTask = ThreadPoolManager.schedule(new CheckTimeUp(remaining), interval); } else { - _checkTimeUpTask = ThreadPoolManager.getInstance().scheduleGeneral(new TimeUp(), interval); + _checkTimeUpTask = ThreadPoolManager.schedule(new TimeUp(), interval); } } @@ -874,7 +874,7 @@ public final class Instance { if (player != null) { - _ejectDeadTasks.put(player.getObjectId(), ThreadPoolManager.getInstance().scheduleGeneral(() -> + _ejectDeadTasks.put(player.getObjectId(), ThreadPoolManager.schedule(() -> { if (player.isDead() && (player.getInstanceId() == getId())) { diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Message.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Message.java index 97dce4babb..9aa371e2e1 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Message.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Message.java @@ -145,7 +145,7 @@ public class Message _attachments = msg.getAttachments(); msg.removeAttachments(); _attachments.setNewMessageId(_messageId); - _unloadTask = ThreadPoolManager.getInstance().scheduleGeneral(new AttachmentsUnloadTask(this), UNLOAD_ATTACHMENTS_INTERVAL + Rnd.get(UNLOAD_ATTACHMENTS_INTERVAL)); + _unloadTask = ThreadPoolManager.schedule(new AttachmentsUnloadTask(this), UNLOAD_ATTACHMENTS_INTERVAL + Rnd.get(UNLOAD_ATTACHMENTS_INTERVAL)); } public static PreparedStatement getStatement(Message msg, Connection con) throws SQLException @@ -330,7 +330,7 @@ public class Message { _attachments = new Mail(_senderId, _messageId); _attachments.restore(); - _unloadTask = ThreadPoolManager.getInstance().scheduleGeneral(new AttachmentsUnloadTask(this), UNLOAD_ATTACHMENTS_INTERVAL + Rnd.get(UNLOAD_ATTACHMENTS_INTERVAL)); + _unloadTask = ThreadPoolManager.schedule(new AttachmentsUnloadTask(this), UNLOAD_ATTACHMENTS_INTERVAL + Rnd.get(UNLOAD_ATTACHMENTS_INTERVAL)); } return _attachments; } @@ -364,7 +364,7 @@ public class Message _attachments = new Mail(_senderId, _messageId); _hasAttachments = true; - _unloadTask = ThreadPoolManager.getInstance().scheduleGeneral(new AttachmentsUnloadTask(this), UNLOAD_ATTACHMENTS_INTERVAL + Rnd.get(UNLOAD_ATTACHMENTS_INTERVAL)); + _unloadTask = ThreadPoolManager.schedule(new AttachmentsUnloadTask(this), UNLOAD_ATTACHMENTS_INTERVAL + Rnd.get(UNLOAD_ATTACHMENTS_INTERVAL)); return _attachments; } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/NevitSystem.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/NevitSystem.java index 228dd61303..0096c92aa0 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/NevitSystem.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/NevitSystem.java @@ -147,7 +147,7 @@ public class NevitSystem implements IUniqueId { if ((_adventTask == null) && (getAdventTime() < Config.NEVIT_ADVENT_TIME)) { - _adventTask = ThreadPoolManager.getInstance().scheduleGeneral(new AdventTask(), 30000); + _adventTask = ThreadPoolManager.schedule(new AdventTask(), 30000); getPlayer().sendPacket(new ExNevitAdventTimeChange(getAdventTime(), false)); } } @@ -203,7 +203,7 @@ public class NevitSystem implements IUniqueId getPlayer().sendPacket(new ExNevitAdventEffect(time)); getPlayer().sendPacket(SystemMessageId.NEVIT_HAS_BLESSED_YOU_FROM_ABOVE); getPlayer().startAbnormalVisualEffect(true, AbnormalVisualEffect.NAVIT_ADVENT); - _nevitEffectTask = ThreadPoolManager.getInstance().scheduleGeneral(new NevitEffectEnd(), time * 1000L); + _nevitEffectTask = ThreadPoolManager.schedule(new NevitEffectEnd(), time * 1000L); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Siege.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Siege.java index bd71095e12..2282313091 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Siege.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/Siege.java @@ -101,35 +101,35 @@ public class Siege implements Siegable final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_HOUR_S_UNTIL_CASTLE_SIEGE_CONCLUSION); sm.addInt(2); announceToPlayer(sm, true); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 3600000); // Prepare task for 1 hr left. + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 3600000); // Prepare task for 1 hr left. } else if ((timeRemaining <= 3600000) && (timeRemaining > 600000)) { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_CASTLE_SIEGE_CONCLUSION); sm.addInt((int) timeRemaining / 60000); announceToPlayer(sm, true); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 600000); // Prepare task for 10 minute left. + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 600000); // Prepare task for 10 minute left. } else if ((timeRemaining <= 600000) && (timeRemaining > 300000)) { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_CASTLE_SIEGE_CONCLUSION); sm.addInt((int) timeRemaining / 60000); announceToPlayer(sm, true); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 300000); // Prepare task for 5 minute left. + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 300000); // Prepare task for 5 minute left. } else if ((timeRemaining <= 300000) && (timeRemaining > 10000)) { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_CASTLE_SIEGE_CONCLUSION); sm.addInt((int) timeRemaining / 60000); announceToPlayer(sm, true); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 10000); // Prepare task for 10 seconds count down + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 10000); // Prepare task for 10 seconds count down } else if ((timeRemaining <= 10000) && (timeRemaining > 0)) { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THIS_CASTLE_SIEGE_WILL_END_IN_S1_SECOND_S); sm.addInt((int) timeRemaining / 1000); announceToPlayer(sm, true); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(_castleInst), timeRemaining); // Prepare task for second count down + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(_castleInst), timeRemaining); // Prepare task for second count down } else { @@ -168,7 +168,7 @@ public class Siege implements Siegable final long regTimeRemaining = getTimeRegistrationOverDate().getTimeInMillis() - Calendar.getInstance().getTimeInMillis(); if (regTimeRemaining > 0) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), regTimeRemaining); + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), regTimeRemaining); return; } endTimeRegistration(true); @@ -177,7 +177,7 @@ public class Siege implements Siegable final long timeRemaining = getSiegeDate().getTimeInMillis() - Calendar.getInstance().getTimeInMillis(); if (timeRemaining > 86400000) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 86400000); // Prepare task for 24 before siege start to end registration + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 86400000); // Prepare task for 24 before siege start to end registration } else if ((timeRemaining <= 86400000) && (timeRemaining > 13600000)) { @@ -186,23 +186,23 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(sm); _isRegistrationOver = true; clearSiegeWaitingClan(); - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 13600000); // Prepare task for 1 hr left before siege start. + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 13600000); // Prepare task for 1 hr left before siege start. } else if ((timeRemaining <= 13600000) && (timeRemaining > 600000)) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 600000); // Prepare task for 10 minute left. + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 600000); // Prepare task for 10 minute left. } else if ((timeRemaining <= 600000) && (timeRemaining > 300000)) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 300000); // Prepare task for 5 minute left. + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 300000); // Prepare task for 5 minute left. } else if ((timeRemaining <= 300000) && (timeRemaining > 10000)) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 10000); // Prepare task for 10 seconds count down + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 10000); // Prepare task for 10 seconds count down } else if ((timeRemaining <= 10000) && (timeRemaining > 0)) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining); // Prepare task for second count down + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining); // Prepare task for second count down } else { @@ -513,7 +513,7 @@ public class Siege implements Siegable // Schedule a task to prepare auto siege end _siegeEndDate = Calendar.getInstance(); _siegeEndDate.add(Calendar.MINUTE, SiegeManager.getInstance().getSiegeLength()); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(getCastle()), 1000); // Prepare auto end task + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(getCastle()), 1000); // Prepare auto end task final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THE_S1_SIEGE_HAS_STARTED); sm.addCastleId(getCastle().getResidenceId()); @@ -1026,7 +1026,7 @@ public class Siege implements Siegable { _scheduledStartSiegeTask.cancel(false); } - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new Siege.ScheduleStartSiegeTask(getCastle()), 1000); + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new Siege.ScheduleStartSiegeTask(getCastle()), 1000); } /** @@ -1341,7 +1341,7 @@ public class Siege implements Siegable if (_scheduledStartSiegeTask != null) { _scheduledStartSiegeTask.cancel(true); - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new Siege.ScheduleStartSiegeTask(getCastle()), 1000); + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new Siege.ScheduleStartSiegeTask(getCastle()), 1000); } try (Connection con = DatabaseFactory.getInstance().getConnection(); diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/TvTEventTeleporter.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/TvTEventTeleporter.java index 214e89916d..59bfe47899 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/TvTEventTeleporter.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/TvTEventTeleporter.java @@ -45,7 +45,7 @@ public class TvTEventTeleporter implements Runnable _coordinates = coordinates; _adminRemove = adminRemove; - ThreadPoolManager.getInstance().scheduleGeneral(this, fastSchedule ? 0 : (TvTEvent.isStarted() ? Config.TVT_EVENT_RESPAWN_TELEPORT_DELAY : Config.TVT_EVENT_START_LEAVE_TELEPORT_DELAY) * 1000); + ThreadPoolManager.schedule(this, fastSchedule ? 0 : (TvTEvent.isStarted() ? Config.TVT_EVENT_RESPAWN_TELEPORT_DELAY : Config.TVT_EVENT_START_LEAVE_TELEPORT_DELAY) * 1000); } /** diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/TvTManager.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/TvTManager.java index 1f84e19a18..cc3795d736 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/TvTManager.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/TvTManager.java @@ -96,7 +96,7 @@ public class TvTManager if (nextStartTime != null) { _task = new TvTStartTask(nextStartTime.getTimeInMillis()); - ThreadPoolManager.getInstance().executeGeneral(_task); + ThreadPoolManager.execute(_task); } } catch (Exception e) @@ -123,7 +123,7 @@ public class TvTManager // schedule registration end _task.setStartTime(System.currentTimeMillis() + (60000L * Config.TVT_EVENT_PARTICIPATION_TIME)); - ThreadPoolManager.getInstance().executeGeneral(_task); + ThreadPoolManager.execute(_task); } } @@ -143,7 +143,7 @@ public class TvTManager { TvTEvent.sysMsgToAllParticipants("TvT Event: Teleporting participants to an arena in " + Config.TVT_EVENT_START_LEAVE_TELEPORT_DELAY + " second(s)."); _task.setStartTime(System.currentTimeMillis() + (60000L * Config.TVT_EVENT_RUNNING_TIME)); - ThreadPoolManager.getInstance().executeGeneral(_task); + ThreadPoolManager.execute(_task); } } @@ -164,7 +164,7 @@ public class TvTManager if (_task.nextRun.cancel(false)) { _task.setStartTime(System.currentTimeMillis()); - ThreadPoolManager.getInstance().executeGeneral(_task); + ThreadPoolManager.execute(_task); } } @@ -245,7 +245,7 @@ public class TvTManager if (delay > 0) { - nextRun = ThreadPoolManager.getInstance().scheduleGeneral(this, nextMsg * 1000); + nextRun = ThreadPoolManager.schedule(this, nextMsg * 1000); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/clanhall/AuctionableHall.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/clanhall/AuctionableHall.java index 7879d440fa..8afa5644b8 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/clanhall/AuctionableHall.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/clanhall/AuctionableHall.java @@ -111,22 +111,22 @@ public final class AuctionableHall extends ClanHall final long currentTime = System.currentTimeMillis(); if (_paidUntil > currentTime) { - ThreadPoolManager.getInstance().scheduleGeneral(new FeeTask(), _paidUntil - currentTime); + ThreadPoolManager.schedule(new FeeTask(), _paidUntil - currentTime); } else if (!_paid && !forced) { if ((System.currentTimeMillis() + (3600000 * 24)) <= (_paidUntil + _chRate)) { - ThreadPoolManager.getInstance().scheduleGeneral(new FeeTask(), System.currentTimeMillis() + (3600000 * 24)); + ThreadPoolManager.schedule(new FeeTask(), System.currentTimeMillis() + (3600000 * 24)); } else { - ThreadPoolManager.getInstance().scheduleGeneral(new FeeTask(), (_paidUntil + _chRate) - System.currentTimeMillis()); + ThreadPoolManager.schedule(new FeeTask(), (_paidUntil + _chRate) - System.currentTimeMillis()); } } else { - ThreadPoolManager.getInstance().scheduleGeneral(new FeeTask(), 0); + ThreadPoolManager.schedule(new FeeTask(), 0); } } @@ -149,7 +149,7 @@ public final class AuctionableHall extends ClanHall if (_paidUntil > _time) { - ThreadPoolManager.getInstance().scheduleGeneral(new FeeTask(), _paidUntil - _time); + ThreadPoolManager.schedule(new FeeTask(), _paidUntil - _time); return; } @@ -168,7 +168,7 @@ public final class AuctionableHall extends ClanHall _paidUntil = _time + _chRate; } ClanTable.getInstance().getClan(getOwnerId()).getWarehouse().destroyItemByItemId("CH_rental_fee", Inventory.ADENA_ID, getLease(), null, null); - ThreadPoolManager.getInstance().scheduleGeneral(new FeeTask(), _paidUntil - _time); + ThreadPoolManager.schedule(new FeeTask(), _paidUntil - _time); _paid = true; updateDb(); } @@ -185,7 +185,7 @@ public final class AuctionableHall extends ClanHall } else { - ThreadPoolManager.getInstance().scheduleGeneral(new FeeTask(), 3000); + ThreadPoolManager.schedule(new FeeTask(), 3000); } } else @@ -196,11 +196,11 @@ public final class AuctionableHall extends ClanHall Clan.broadcastToOnlineMembers(sm); if ((_time + (3600000 * 24)) <= (_paidUntil + _chRate)) { - ThreadPoolManager.getInstance().scheduleGeneral(new FeeTask(), _time + (3600000 * 24)); + ThreadPoolManager.schedule(new FeeTask(), _time + (3600000 * 24)); } else { - ThreadPoolManager.getInstance().scheduleGeneral(new FeeTask(), (_paidUntil + _chRate) - _time); + ThreadPoolManager.schedule(new FeeTask(), (_paidUntil + _chRate) - _time); } } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/clanhall/ClanHallSiegeEngine.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/clanhall/ClanHallSiegeEngine.java index fbc302997d..3e4e4568ec 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/clanhall/ClanHallSiegeEngine.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/entity/clanhall/ClanHallSiegeEngine.java @@ -86,7 +86,7 @@ public abstract class ClanHallSiegeEngine extends Quest implements Siegable _hall = CHSiegeManager.getInstance().getSiegableHall(hallId); _hall.setSiege(this); - _siegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new PrepareOwner(), _hall.getNextSiegeTime() - System.currentTimeMillis() - 3600000); + _siegeTask = ThreadPoolManager.schedule(new PrepareOwner(), _hall.getNextSiegeTime() - System.currentTimeMillis() - 3600000); _log.config(_hall.getName() + " siege scheduled for " + getSiegeDate().getTime() + "."); loadAttackers(); } @@ -294,7 +294,7 @@ public abstract class ClanHallSiegeEngine extends Quest implements Siegable Broadcast.toAllOnlinePlayers(msg); _hall.updateSiegeStatus(SiegeStatus.WAITING_BATTLE); - _siegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new SiegeStarts(), 3600000); + _siegeTask = ThreadPoolManager.schedule(new SiegeStarts(), 3600000); } @Override @@ -305,7 +305,7 @@ public abstract class ClanHallSiegeEngine extends Quest implements Siegable onSiegeEnds(); _attackers.clear(); _hall.updateNextSiege(); - _siegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new PrepareOwner(), _hall.getSiegeDate().getTimeInMillis()); + _siegeTask = ThreadPoolManager.schedule(new PrepareOwner(), _hall.getSiegeDate().getTimeInMillis()); _hall.updateSiegeStatus(SiegeStatus.WAITING_BATTLE); final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THE_SIEGE_OF_S1_HAS_BEEN_CANCELED_DUE_TO_LACK_OF_INTEREST); sm.addString(_hall.getName()); @@ -337,7 +337,7 @@ public abstract class ClanHallSiegeEngine extends Quest implements Siegable _hall.updateSiegeStatus(SiegeStatus.RUNNING); onSiegeStarts(); - _siegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new SiegeEnds(), _hall.getSiegeLenght()); + _siegeTask = ThreadPoolManager.schedule(new SiegeEnds(), _hall.getSiegeLenght()); } @Override @@ -399,7 +399,7 @@ public abstract class ClanHallSiegeEngine extends Quest implements Siegable onSiegeEnds(); - _siegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new PrepareOwner(), _hall.getNextSiegeTime() - System.currentTimeMillis() - 3600000); + _siegeTask = ThreadPoolManager.schedule(new PrepareOwner(), _hall.getNextSiegeTime() - System.currentTimeMillis() - 3600000); _log.config("Siege of " + _hall.getName() + " scheduled for " + _hall.getSiegeDate().getTime() + "."); _hall.updateSiegeStatus(SiegeStatus.REGISTERING); @@ -410,7 +410,7 @@ public abstract class ClanHallSiegeEngine extends Quest implements Siegable public void updateSiege() { cancelSiegeTask(); - _siegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new PrepareOwner(), _hall.getNextSiegeTime() - 3600000); + _siegeTask = ThreadPoolManager.schedule(new PrepareOwner(), _hall.getNextSiegeTime() - 3600000); _log.config(_hall.getName() + " siege scheduled for " + _hall.getSiegeDate().getTime().toString() + "."); } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/event/LongTimeEvent.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/event/LongTimeEvent.java index 7d94b1a283..9b2a21d717 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/event/LongTimeEvent.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/event/LongTimeEvent.java @@ -92,7 +92,7 @@ public class LongTimeEvent extends Quest else if (_eventPeriod.getStartDate().after(new Date())) { final long delay = _eventPeriod.getStartDate().getTime() - System.currentTimeMillis(); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStart(), delay); + ThreadPoolManager.schedule(new ScheduleStart(), delay); _log.info("Event " + _eventName + " will be started at " + _eventPeriod.getStartDate()); } else @@ -283,7 +283,7 @@ public class LongTimeEvent extends Quest AnnouncementsTable.getInstance().addAnnouncement(new EventAnnouncement(_eventPeriod, _onEnterMsg)); // Schedule event end (now only for message sending) - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEnd(), millisToEventEnd); + ThreadPoolManager.schedule(new ScheduleEnd(), millisToEventEnd); } /** diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/events/EventDispatcher.java index eea22a29e2..839cd18af5 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -17,7 +17,6 @@ package com.l2jmobius.gameserver.model.events; import java.util.Queue; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -116,7 +115,7 @@ public final class EventDispatcher if (hasListeners) { - ThreadPoolManager.getInstance().executeEvent(() -> notifyEventToMultipleContainers(event, containers, null)); + ThreadPoolManager.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } } @@ -130,22 +129,7 @@ public final class EventDispatcher { if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) { - ThreadPoolManager.getInstance().scheduleEvent(() -> notifyEvent(event, container, null), delay); - } - } - - /** - * Scheduling current listener notification asynchronously after specified delay. - * @param event - * @param container - * @param delay - * @param unit - */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay, TimeUnit unit) - { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) - { - ThreadPoolManager.getInstance().scheduleEvent(() -> notifyEvent(event, container, null), delay, unit); + ThreadPoolManager.schedule(() -> notifyEvent(event, container, null), delay); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/fishing/L2Fishing.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/fishing/L2Fishing.java index c276aa98b4..823293d7b7 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/fishing/L2Fishing.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/fishing/L2Fishing.java @@ -106,7 +106,7 @@ public class L2Fishing implements Runnable if (_fishAiTask == null) { - _fishAiTask = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(this, 1000, 1000); + _fishAiTask = ThreadPoolManager.scheduleAtFixedRate(this, 1000, 1000); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/itemauction/ItemAuction.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/itemauction/ItemAuction.java index 5694cdfda7..c342670540 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/itemauction/ItemAuction.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/itemauction/ItemAuction.java @@ -393,7 +393,7 @@ public final class ItemAuction public final void broadcastToAllBidders(L2GameServerPacket packet) { - ThreadPoolManager.getInstance().executeGeneral(() -> broadcastToAllBiddersInternal(packet)); + ThreadPoolManager.execute(() -> broadcastToAllBiddersInternal(packet)); } public final void broadcastToAllBiddersInternal(L2GameServerPacket packet) diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/itemauction/ItemAuctionInstance.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/itemauction/ItemAuctionInstance.java index 0f44250c68..cfdadbe8f8 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/itemauction/ItemAuctionInstance.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/itemauction/ItemAuctionInstance.java @@ -323,17 +323,17 @@ public final class ItemAuctionInstance { if (currentAuction.getAuctionState() == ItemAuctionState.STARTED) { - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleAuctionTask(currentAuction), Math.max(currentAuction.getEndingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(new ScheduleAuctionTask(currentAuction), Math.max(currentAuction.getEndingTime() - System.currentTimeMillis(), 0L))); } else { - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleAuctionTask(currentAuction), Math.max(currentAuction.getStartingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(new ScheduleAuctionTask(currentAuction), Math.max(currentAuction.getStartingTime() - System.currentTimeMillis(), 0L))); } _log.log(Level.INFO, getClass().getSimpleName() + ": Schedule current auction " + currentAuction.getAuctionId() + " for instance " + _instanceId); } else { - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleAuctionTask(nextAuction), Math.max(nextAuction.getStartingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(new ScheduleAuctionTask(nextAuction), Math.max(nextAuction.getStartingTime() - System.currentTimeMillis(), 0L))); _log.log(Level.INFO, getClass().getSimpleName() + ": Schedule next auction " + nextAuction.getAuctionId() + " on " + DATE_FORMAT.format(new Date(nextAuction.getStartingTime())) + " for instance " + _instanceId); } } @@ -416,7 +416,7 @@ public final class ItemAuctionInstance if (_auction.getScheduledAuctionEndingExtendState() == ItemAuctionExtendState.INITIAL) { _auction.setScheduledAuctionEndingExtendState(ItemAuctionExtendState.EXTEND_BY_5_MIN); - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); return; } break; @@ -426,7 +426,7 @@ public final class ItemAuctionInstance if (_auction.getScheduledAuctionEndingExtendState() != ItemAuctionExtendState.EXTEND_BY_3_MIN) { _auction.setScheduledAuctionEndingExtendState(ItemAuctionExtendState.EXTEND_BY_3_MIN); - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); return; } break; @@ -436,7 +436,7 @@ public final class ItemAuctionInstance if (_auction.getScheduledAuctionEndingExtendState() != ItemAuctionExtendState.EXTEND_BY_CONFIG_PHASE_B) { _auction.setScheduledAuctionEndingExtendState(ItemAuctionExtendState.EXTEND_BY_CONFIG_PHASE_B); - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); return; } break; @@ -446,7 +446,7 @@ public final class ItemAuctionInstance if (_auction.getScheduledAuctionEndingExtendState() != ItemAuctionExtendState.EXTEND_BY_CONFIG_PHASE_A) { _auction.setScheduledAuctionEndingExtendState(ItemAuctionExtendState.EXTEND_BY_CONFIG_PHASE_A); - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); return; } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/items/instance/L2ItemInstance.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/items/instance/L2ItemInstance.java index 938d0ff73b..3ff8228e67 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/items/instance/L2ItemInstance.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/items/instance/L2ItemInstance.java @@ -1371,7 +1371,7 @@ public final class L2ItemInstance extends L2Object return; } _consumingMana = true; - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleConsumeManaTask(this), MANA_CONSUMPTION_RATE); + ThreadPoolManager.schedule(new ScheduleConsumeManaTask(this), MANA_CONSUMPTION_RATE); } /** @@ -1583,7 +1583,7 @@ public final class L2ItemInstance extends L2Object public final void dropMe(L2Character dropper, int x, int y, int z) { - ThreadPoolManager.getInstance().executeGeneral(new ItemDropTask(this, dropper, x, y, z)); + ThreadPoolManager.execute(new ItemDropTask(this, dropper, x, y, z)); if ((dropper != null) && dropper.isPlayer()) { // Notify to scripts @@ -1864,7 +1864,7 @@ public final class L2ItemInstance extends L2Object { _lifeTimeTask.cancel(false); } - _lifeTimeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleLifeTimeTask(this), getRemainingTime()); + _lifeTimeTask = ThreadPoolManager.schedule(new ScheduleLifeTimeTask(this), getRemainingTime()); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/olympiad/Olympiad.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/olympiad/Olympiad.java index eee5718405..413cf74d8d 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/olympiad/Olympiad.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/olympiad/Olympiad.java @@ -236,7 +236,7 @@ public class Olympiad extends ListenersContainer if (_validationEnd > Calendar.getInstance().getTimeInMillis()) { loadNoblesRank(); - _scheduledValdationTask = ThreadPoolManager.getInstance().scheduleGeneral(new ValidationEndTask(), getMillisToValidationEnd()); + _scheduledValdationTask = ThreadPoolManager.schedule(new ValidationEndTask(), getMillisToValidationEnd()); } else { @@ -390,7 +390,7 @@ public class Olympiad extends ListenersContainer _scheduledOlympiadEnd.cancel(true); } - _scheduledOlympiadEnd = ThreadPoolManager.getInstance().scheduleGeneral(new OlympiadEndTask(HEROS_TO_BE), getMillisToOlympiadEnd()); + _scheduledOlympiadEnd = ThreadPoolManager.schedule(new OlympiadEndTask(HEROS_TO_BE), getMillisToOlympiadEnd()); updateCompStatus(); } @@ -432,7 +432,7 @@ public class Olympiad extends ListenersContainer _validationEnd = validationEnd.getTimeInMillis() + VALIDATION_PERIOD; loadNoblesRank(); - _scheduledValdationTask = ThreadPoolManager.getInstance().scheduleGeneral(new ValidationEndTask(), getMillisToValidationEnd()); + _scheduledValdationTask = ThreadPoolManager.schedule(new ValidationEndTask(), getMillisToValidationEnd()); } } @@ -480,7 +480,7 @@ public class Olympiad extends ListenersContainer _log.info("Olympiad System: Event starts/started : " + _compStart.getTime()); } - _scheduledCompStart = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _scheduledCompStart = ThreadPoolManager.schedule(() -> { if (isOlympiadEnd()) { @@ -493,19 +493,19 @@ public class Olympiad extends ListenersContainer _log.info("Olympiad System: Olympiad Game Started"); _logResults.info("Result,Player1,Player2,Player1 HP,Player2 HP,Player1 Damage,Player2 Damage,Points,Classed"); - _gameManager = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(OlympiadGameManager.getInstance(), 30000, 30000); + _gameManager = ThreadPoolManager.scheduleAtFixedRate(OlympiadGameManager.getInstance(), 30000, 30000); if (Config.ALT_OLY_ANNOUNCE_GAMES) { - _gameAnnouncer = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new OlympiadAnnouncer(), 30000, 500); + _gameAnnouncer = ThreadPoolManager.scheduleAtFixedRate(new OlympiadAnnouncer(), 30000, 500); } final long regEnd = getMillisToCompEnd() - 600000; if (regEnd > 0) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> Broadcast.toAllOnlinePlayers(SystemMessage.getSystemMessage(SystemMessageId.THE_GRAND_OLYMPIAD_REGISTRATION_PERIOD_HAS_ENDED)), regEnd); + ThreadPoolManager.schedule(() -> Broadcast.toAllOnlinePlayers(SystemMessage.getSystemMessage(SystemMessageId.THE_GRAND_OLYMPIAD_REGISTRATION_PERIOD_HAS_ENDED)), regEnd); } - _scheduledCompEnd = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _scheduledCompEnd = ThreadPoolManager.schedule(() -> { if (isOlympiadEnd()) { @@ -560,7 +560,7 @@ public class Olympiad extends ListenersContainer _scheduledOlympiadEnd.cancel(true); } - _scheduledOlympiadEnd = ThreadPoolManager.getInstance().scheduleGeneral(new OlympiadEndTask(HEROS_TO_BE), 0); + _scheduledOlympiadEnd = ThreadPoolManager.schedule(new OlympiadEndTask(HEROS_TO_BE), 0); } protected long getMillisToValidationEnd() @@ -649,7 +649,7 @@ public class Olympiad extends ListenersContainer private void scheduleWeeklyChange() { - _scheduledWeeklyTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(() -> + _scheduledWeeklyTask = ThreadPoolManager.scheduleAtFixedRate(() -> { addWeeklyPoints(); _log.info("Olympiad System: Added weekly points to nobles"); diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java index 14b9338792..c61b8d9e52 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java @@ -160,7 +160,7 @@ public final class OlympiadGameTask implements Runnable _game = game; _state = GameState.BEGIN; _needAnnounce = false; - ThreadPoolManager.getInstance().executeGeneral(this); + ThreadPoolManager.execute(this); } @Override @@ -315,7 +315,7 @@ public final class OlympiadGameTask implements Runnable return; } } - ThreadPoolManager.getInstance().scheduleGeneral(this, delay * 1000); + ThreadPoolManager.schedule(this, delay * 1000); } catch (Exception e) { @@ -335,7 +335,7 @@ public final class OlympiadGameTask implements Runnable _log.log(Level.WARNING, "Exception in " + _state + ", trying to port players back: " + e.getMessage(), e); _state = GameState.GAME_STOPPED; - ThreadPoolManager.getInstance().scheduleGeneral(this, 1000); + ThreadPoolManager.schedule(this, 1000); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/olympiad/OlympiadManager.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/olympiad/OlympiadManager.java index 103925c2f9..00aebfb739 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/olympiad/OlympiadManager.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/olympiad/OlympiadManager.java @@ -405,7 +405,7 @@ public class OlympiadManager if ((team != null) && team.contains(objId)) { _teamsBasedRegisters.remove(team); - ThreadPoolManager.getInstance().executeGeneral(new AnnounceUnregToTeam(team)); + ThreadPoolManager.execute(new AnnounceUnregToTeam(team)); return true; } } @@ -437,7 +437,7 @@ public class OlympiadManager if ((team != null) && team.contains(objId)) { _teamsBasedRegisters.remove(team); - ThreadPoolManager.getInstance().executeGeneral(new AnnounceUnregToTeam(team)); + ThreadPoolManager.execute(new AnnounceUnregToTeam(team)); return; } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/punishment/PunishmentTask.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/punishment/PunishmentTask.java index 2bf21789fc..e05e552be6 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/punishment/PunishmentTask.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/punishment/PunishmentTask.java @@ -147,7 +147,7 @@ public class PunishmentTask implements Runnable onStart(); if (_expirationTime > 0) // Has expiration? { - _task = ThreadPoolManager.getInstance().scheduleGeneral(this, _expirationTime - System.currentTimeMillis()); + _task = ThreadPoolManager.schedule(this, _expirationTime - System.currentTimeMillis()); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/quest/QuestTimer.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/quest/QuestTimer.java index ca171bcb28..907874a312 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/quest/QuestTimer.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/quest/QuestTimer.java @@ -68,7 +68,7 @@ public class QuestTimer _player = player; _npc = npc; _isRepeating = repeating; - _schedular = repeating ? ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new ScheduleTimerTask(), time, time) : ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleTimerTask(), time); + _schedular = repeating ? ThreadPoolManager.scheduleAtFixedRate(new ScheduleTimerTask(), time, time) : ThreadPoolManager.schedule(new ScheduleTimerTask(), time); } public QuestTimer(Quest quest, String name, long time, L2Npc npc, L2PcInstance player) diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/skills/BuffInfo.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/skills/BuffInfo.java index 07e0055425..fbadb34ed1 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/skills/BuffInfo.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/skills/BuffInfo.java @@ -253,7 +253,7 @@ public final class BuffInfo // Creates a task that will stop all the effects. if (_abnormalTime > 0) { - _scheduledFutureTimeTask = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new BuffTimeTask(this), 0, 1000L); + _scheduledFutureTimeTask = ThreadPoolManager.scheduleAtFixedRate(new BuffTimeTask(this), 0, 1000L); } boolean update = false; @@ -272,7 +272,7 @@ public final class BuffInfo { // The task for the effect ticks. final EffectTickTask effectTask = new EffectTickTask(this, effect); - addTask(effect, new EffectTaskInfo(effectTask, ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(effectTask, effect.getTicks() * Config.EFFECT_TICK_RATIO, effect.getTicks() * Config.EFFECT_TICK_RATIO))); + addTask(effect, new EffectTaskInfo(effectTask, ThreadPoolManager.scheduleAtFixedRate(effectTask, effect.getTicks() * Config.EFFECT_TICK_RATIO, effect.getTicks() * Config.EFFECT_TICK_RATIO))); } // Add stats. diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/skills/SkillChannelizer.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/skills/SkillChannelizer.java index a83f8a8dd1..737edab279 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/skills/SkillChannelizer.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/skills/SkillChannelizer.java @@ -77,7 +77,7 @@ public class SkillChannelizer implements Runnable // Start channeling. _skill = skill; - _task = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this, skill.getChannelingTickInitialDelay(), skill.getChannelingTickInterval()); + _task = ThreadPoolManager.scheduleAtFixedRate(this, skill.getChannelingTickInitialDelay(), skill.getChannelingTickInterval()); } public void stopChanneling() diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/zone/type/L2DamageZone.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/zone/type/L2DamageZone.java index 61bc896624..7d7544a940 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/zone/type/L2DamageZone.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/zone/type/L2DamageZone.java @@ -115,7 +115,7 @@ public class L2DamageZone extends L2ZoneType { if (getSettings().getTask() == null) { - getSettings().setTask(ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new ApplyDamage(this), _startTask, _reuseTask)); + getSettings().setTask(ThreadPoolManager.scheduleAtFixedRate(new ApplyDamage(this), _startTask, _reuseTask)); } } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/zone/type/L2DynamicZone.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/zone/type/L2DynamicZone.java index 194ea30e22..867569f6c3 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/zone/type/L2DynamicZone.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/zone/type/L2DynamicZone.java @@ -44,7 +44,7 @@ public class L2DynamicZone extends L2ZoneType final AbstractZoneSettings settings = ZoneManager.getSettings(getName()) == null ? new TaskZoneSettings() : ZoneManager.getSettings(getName()); setSettings(settings); - getSettings().setTask(ThreadPoolManager.getInstance().scheduleGeneral(() -> remove(), skill.getAbnormalTime() * 1000)); + getSettings().setTask(ThreadPoolManager.schedule(() -> remove(), skill.getAbnormalTime() * 1000)); } @Override diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/zone/type/L2EffectZone.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/zone/type/L2EffectZone.java index 3c80c47469..5fba2ef517 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/zone/type/L2EffectZone.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/zone/type/L2EffectZone.java @@ -130,7 +130,7 @@ public class L2EffectZone extends L2ZoneType { synchronized (this) { - getSettings().setTask(ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new ApplySkill(), _initialDelay, _reuse)); + getSettings().setTask(ThreadPoolManager.scheduleAtFixedRate(new ApplySkill(), _initialDelay, _reuse)); } } if (!character.isPlayer()) diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/zone/type/L2JailZone.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/zone/type/L2JailZone.java index 3bc1475ed5..d3f5e67199 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/zone/type/L2JailZone.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/zone/type/L2JailZone.java @@ -78,7 +78,7 @@ public class L2JailZone extends L2ZoneType if (player.isJailed()) { // when a player wants to exit jail even if he is still jailed, teleport him back to jail - ThreadPoolManager.getInstance().scheduleGeneral(new TeleportTask(player, JAIL_IN_LOC), 2000); + ThreadPoolManager.schedule(new TeleportTask(player, JAIL_IN_LOC), 2000); character.sendMessage("You cannot cheat your way out of here. You must wait until your jail time is over."); } if (Config.JAIL_DISABLE_TRANSACTION) diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/zone/type/L2OlympiadStadiumZone.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/zone/type/L2OlympiadStadiumZone.java index d614901480..e97a7a1cb3 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/zone/type/L2OlympiadStadiumZone.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/zone/type/L2OlympiadStadiumZone.java @@ -180,7 +180,7 @@ public class L2OlympiadStadiumZone extends L2ZoneRespawn // only participants, observers and GMs allowed if (!player.canOverrideCond(PcCondOverride.ZONE_CONDITIONS) && !player.isInOlympiadMode() && !player.inObserverMode()) { - ThreadPoolManager.getInstance().executeGeneral(new KickPlayer(player)); + ThreadPoolManager.execute(new KickPlayer(player)); } else { diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/zone/type/L2ResidenceHallTeleportZone.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/zone/type/L2ResidenceHallTeleportZone.java index 1bc8c728e6..3ef40f4f63 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/zone/type/L2ResidenceHallTeleportZone.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/model/zone/type/L2ResidenceHallTeleportZone.java @@ -62,7 +62,7 @@ public class L2ResidenceHallTeleportZone extends L2ResidenceTeleportZone { if ((_teleTask == null) || _teleTask.isDone()) { - _teleTask = ThreadPoolManager.getInstance().scheduleGeneral(new TeleportTask(), 30000); + _teleTask = ThreadPoolManager.schedule(new TeleportTask(), 30000); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/network/L2GameClient.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/network/L2GameClient.java index e208ba9f54..404d03cb44 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/network/L2GameClient.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/network/L2GameClient.java @@ -131,7 +131,7 @@ public final class L2GameClient extends MMOClient> i if (Config.CHAR_STORE_INTERVAL > 0) { - _autoSaveInDB = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoSaveTask(), 300000L, Config.CHAR_STORE_INTERVAL * 60000L); + _autoSaveInDB = ThreadPoolManager.scheduleAtFixedRate(new AutoSaveTask(), 300000L, Config.CHAR_STORE_INTERVAL * 60000L); } else { @@ -702,7 +702,7 @@ public final class L2GameClient extends MMOClient> i // no long running tasks here, do it async try { - ThreadPoolManager.getInstance().executeGeneral(new DisconnectTask()); + ThreadPoolManager.execute(new DisconnectTask()); } catch (RejectedExecutionException e) { @@ -723,7 +723,7 @@ public final class L2GameClient extends MMOClient> i { cancelCleanup(); } - _cleanupTask = ThreadPoolManager.getInstance().scheduleGeneral(new CleanupTask(), 0); // instant + _cleanupTask = ThreadPoolManager.schedule(new CleanupTask(), 0); // instant } } @@ -875,7 +875,7 @@ public final class L2GameClient extends MMOClient> i { if (_cleanupTask == null) { - _cleanupTask = ThreadPoolManager.getInstance().scheduleGeneral(new CleanupTask(), fast ? 5 : 15000L); + _cleanupTask = ThreadPoolManager.schedule(new CleanupTask(), fast ? 5 : 15000L); } } } @@ -1092,20 +1092,17 @@ public final class L2GameClient extends MMOClient> i closeNow(); return; } - ThreadPoolManager.getInstance().executeIOPacket(this); + ThreadPoolManager.execute(this); } else { - ThreadPoolManager.getInstance().executePacket(this); + ThreadPoolManager.execute(this); } } catch (RejectedExecutionException e) { // if the server is shutdown we ignore - if (!ThreadPoolManager.getInstance().isShutdown()) - { - _log.severe("Failed executing: " + packet.getClass().getSimpleName() + " for Client: " + toString()); - } + // _log.severe("Failed executing: " + packet.getClass().getSimpleName() + " for Client: " + toString()); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/network/clientpackets/RequestPreviewItem.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/network/clientpackets/RequestPreviewItem.java index 7868d3ce39..fdb97a03bb 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/network/clientpackets/RequestPreviewItem.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/network/clientpackets/RequestPreviewItem.java @@ -239,7 +239,7 @@ public final class RequestPreviewItem extends L2GameClientPacket { activeChar.sendPacket(new ShopPreviewInfo(itemList)); // Schedule task - ThreadPoolManager.getInstance().scheduleGeneral(new RemoveWearItemsTask(activeChar), Config.WEAR_DELAY * 1000); + ThreadPoolManager.schedule(new RemoveWearItemsTask(activeChar), Config.WEAR_DELAY * 1000); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index 9cebdc9953..ca4447e6f7 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -98,7 +98,7 @@ public final class RequestRestartPoint extends L2GameClientPacket if ((activeChar.getClan() != null) && castle.getSiege().checkIsAttacker(activeChar.getClan())) { // Schedule respawn delay for attacker - ThreadPoolManager.getInstance().scheduleGeneral(new DeathTask(activeChar), castle.getSiege().getAttackerRespawnDelay()); + ThreadPoolManager.schedule(new DeathTask(activeChar), castle.getSiege().getAttackerRespawnDelay()); if (castle.getSiege().getAttackerRespawnDelay() > 0) { activeChar.sendMessage("You will be re-spawned in " + (castle.getSiege().getAttackerRespawnDelay() / 1000) + " seconds"); diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/network/clientpackets/UseItem.java index c22574db98..8a470edc52 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -315,7 +315,7 @@ public final class UseItem extends L2GameClientPacket } else if (activeChar.isAttackingNow()) { - ThreadPoolManager.getInstance().scheduleGeneral(new WeaponEquipTask(item, activeChar), TimeUnit.MILLISECONDS.convert(activeChar.getAttackEndTime() - System.nanoTime(), TimeUnit.NANOSECONDS)); + ThreadPoolManager.schedule(new WeaponEquipTask(item, activeChar), TimeUnit.MILLISECONDS.convert(activeChar.getAttackEndTime() - System.nanoTime(), TimeUnit.NANOSECONDS)); } else { diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/taskmanager/AttackStanceTaskManager.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/taskmanager/AttackStanceTaskManager.java index 86d14416d0..92d2871dac 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/taskmanager/AttackStanceTaskManager.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/taskmanager/AttackStanceTaskManager.java @@ -42,7 +42,7 @@ public class AttackStanceTaskManager */ protected AttackStanceTaskManager() { - ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new FightModeScheduler(), 0, 1000); + ThreadPoolManager.scheduleAtFixedRate(new FightModeScheduler(), 0, 1000); } /** diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/taskmanager/KnownListUpdateTaskManager.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/taskmanager/KnownListUpdateTaskManager.java index c0f43fc817..7dfbecdcfe 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/taskmanager/KnownListUpdateTaskManager.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/taskmanager/KnownListUpdateTaskManager.java @@ -44,7 +44,7 @@ public class KnownListUpdateTaskManager protected KnownListUpdateTaskManager() { - ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new KnownListUpdate(), 1000, Config.KNOWNLIST_UPDATE_INTERVAL); + ThreadPoolManager.scheduleAtFixedRate(new KnownListUpdate(), 1000, Config.KNOWNLIST_UPDATE_INTERVAL); } private class KnownListUpdate implements Runnable diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/taskmanager/TaskManager.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/taskmanager/TaskManager.java index 37950226d9..21cb40e0e6 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/taskmanager/TaskManager.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/taskmanager/TaskManager.java @@ -231,7 +231,6 @@ public final class TaskManager private boolean launchTask(ExecutedTask task) { - final ThreadPoolManager scheduler = ThreadPoolManager.getInstance(); final TaskTypes type = task.getType(); long delay, interval; switch (type) @@ -244,14 +243,14 @@ public final class TaskManager case TYPE_SHEDULED: { delay = Long.valueOf(task.getParams()[0]); - task.scheduled = scheduler.scheduleGeneral(task, delay); + task.scheduled = ThreadPoolManager.schedule(task, delay); return true; } case TYPE_FIXED_SHEDULED: { delay = Long.valueOf(task.getParams()[0]); interval = Long.valueOf(task.getParams()[1]); - task.scheduled = scheduler.scheduleGeneralAtFixedRate(task, delay, interval); + task.scheduled = ThreadPoolManager.scheduleAtFixedRate(task, delay, interval); return true; } case TYPE_TIME: @@ -262,7 +261,7 @@ public final class TaskManager final long diff = desired.getTime() - System.currentTimeMillis(); if (diff >= 0) { - task.scheduled = scheduler.scheduleGeneral(task, diff); + task.scheduled = ThreadPoolManager.schedule(task, diff); return true; } _log.info(getClass().getSimpleName() + ": Task " + task.getId() + " is obsoleted."); @@ -315,7 +314,7 @@ public final class TaskManager { delay += interval; } - task.scheduled = scheduler.scheduleGeneralAtFixedRate(task, delay, interval); + task.scheduled = ThreadPoolManager.scheduleAtFixedRate(task, delay, interval); return true; } default: diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/util/Evolve.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/util/Evolve.java index adc7435fd2..5f671ffc15 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/util/Evolve.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/util/Evolve.java @@ -143,11 +143,11 @@ public final class Evolve petSummon.startFeed(); item.setEnchantLevel(petSummon.getLevel()); - ThreadPoolManager.getInstance().scheduleGeneral(new EvolveFinalizer(player, petSummon), 900); + ThreadPoolManager.schedule(new EvolveFinalizer(player, petSummon), 900); if (petSummon.getCurrentFed() <= 0) { - ThreadPoolManager.getInstance().scheduleGeneral(new EvolveFeedWait(player, petSummon), 60000); + ThreadPoolManager.schedule(new EvolveFeedWait(player, petSummon), 60000); } else { @@ -240,11 +240,11 @@ public final class Evolve final L2World world = L2World.getInstance(); world.removeObject(removedItem); - ThreadPoolManager.getInstance().scheduleGeneral(new EvolveFinalizer(player, petSummon), 900); + ThreadPoolManager.schedule(new EvolveFinalizer(player, petSummon), 900); if (petSummon.getCurrentFed() <= 0) { - ThreadPoolManager.getInstance().scheduleGeneral(new EvolveFeedWait(player, petSummon), 60000); + ThreadPoolManager.schedule(new EvolveFeedWait(player, petSummon), 60000); } else { diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/util/MinionList.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/util/MinionList.java index 21927778de..d31f7ac9fc 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/util/MinionList.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/util/MinionList.java @@ -187,7 +187,7 @@ public class MinionList final int time = respawnTime < 0 ? _master.isRaid() ? (int) Config.RAID_MINION_RESPAWN_TIMER : 0 : respawnTime; if ((time > 0) && !_master.isAlikeDead()) { - ThreadPoolManager.getInstance().scheduleGeneral(new MinionRespawnTask(minion), time); + ThreadPoolManager.schedule(new MinionRespawnTask(minion), time); } } diff --git a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/util/Util.java b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/util/Util.java index 4791fefae3..049664d3a8 100644 --- a/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/util/Util.java +++ b/L2J_Mobius_HighFive/java/com/l2jmobius/gameserver/util/Util.java @@ -54,7 +54,7 @@ public final class Util public static void handleIllegalPlayerAction(L2PcInstance actor, String message, IllegalActionPunishmentType punishment) { - ThreadPoolManager.getInstance().scheduleGeneral(new IllegalPlayerActionTask(actor, message, punishment), 5000); + ThreadPoolManager.schedule(new IllegalPlayerActionTask(actor, message, punishment), 5000); } public static String getRelativePath(File base, File file) diff --git a/L2J_Mobius_Underground/dist/game/config/General.ini b/L2J_Mobius_Underground/dist/game/config/General.ini index 942a2aec5e..6f97b11d1a 100644 --- a/L2J_Mobius_Underground/dist/game/config/General.ini +++ b/L2J_Mobius_Underground/dist/game/config/General.ini @@ -132,33 +132,29 @@ SkillCheckGM = False # Thread Configuration # --------------------------------------------------------------------------- -# Extreme caution should be here, set to defaults if you do not know what you are doing. -# These could possibly hurt your servers performance or improve it depending on your server's configuration, size, and other factors. -# Default: 10 -ThreadPoolSizeEffects = 50 +# Determines the amount of scheduled thread pools. If set to -1, the server will decide the amount depending on the available processors. +Default: -1 +ScheduledThreadPoolCount = -1 -# Default: 13 -ThreadPoolSizeGeneral = 65 +# Specifies how many threads will be in a single scheduled pool. +Default: 4 +ThreadsPerScheduledThreadPool = 40 -# Default: 2 -ThreadPoolSizeEvents = 10 +# Determines the amount of instant thread pools. If set to -1, the server will decide the amount depending on the available processors. +Default: -1 +InstantThreadPoolCount = -1 + +# Specifies how many threads will be in a single instant pool. +Default: 2 +ThreadsPerInstantThreadPool = 20 # Default: 2 UrgentPacketThreadCoreSize = 20 -# Default: 4 -GeneralPacketThreadCoreSize = 20 -# Default: 4 -GeneralThreadCoreSize = 20 - -# Default: 6 -AiMaxThread = 30 - -# Default: 5 -EventsMaxThread = 25 - -# Dead Lock Detector (a separate thread for detecting deadlocks). +# --------------------------------------------------------------------------- +# Dead Lock Detector (separate thread for detecting deadlocks) +# --------------------------------------------------------------------------- # For improved crash logs and automatic restart in deadlock case if enabled. # Check interval is in seconds. # Default: True diff --git a/L2J_Mobius_Underground/dist/game/data/html/admin/serverinfo.htm b/L2J_Mobius_Underground/dist/game/data/html/admin/serverinfo.htm index cf06c95dc3..84dd350f5c 100644 --- a/L2J_Mobius_Underground/dist/game/data/html/admin/serverinfo.htm +++ b/L2J_Mobius_Underground/dist/game/data/html/admin/serverinfo.htm @@ -8,7 +8,6 @@
-
General: @@ -76,30 +75,5 @@
%totalMem% MB
-
-Thread - General (STP): - %theardInfoGen% -
-Thread - Effects (STP): - %theardInfoEff% -
-Thread - AI (STP): - %theardInfoAi% -
-Thread - Event (STP): - %theardInfoEvent% -
-Thread - Packets (TP): - %theardInfoPack% -
-Thread - I/O Packets (TP): - %theardInfoIOPack% -
-Thread - General Tasks (TP): - %theardInfoGenTask% -
-Thread - Event Tasks (TP): - %theardInfoEvnTask% -
\ No newline at end of file diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/DenOfDevil/DenOfEvil.java b/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/DenOfDevil/DenOfEvil.java index a8f49820ee..3619de52a6 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/DenOfDevil/DenOfEvil.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/DenOfDevil/DenOfEvil.java @@ -127,7 +127,7 @@ public final class DenOfEvil extends AbstractNpcAI zone.addSkill(skillId, skillLevel + 1); if (skillLevel == 3) // 3+1=4 { - ThreadPoolManager.getInstance().scheduleAi(new KashaDestruction(zone), 2 * 60 * 1000l); + ThreadPoolManager.schedule(new KashaDestruction(zone), 2 * 60 * 1000l); zone.broadcastPacket(SystemMessage.getSystemMessage(SystemMessageId.DEFEAT_KASHA_S_EYES_TO_LIFT_THE_GREAT_CURSE)); } else if (skillLevel == 2) @@ -140,7 +140,7 @@ public final class DenOfEvil extends AbstractNpcAI @Override public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) { - ThreadPoolManager.getInstance().scheduleAi(new RespawnNewEye(npc.getLocation()), 15000); + ThreadPoolManager.schedule(new RespawnNewEye(npc.getLocation()), 15000); final L2EffectZone zone = ZoneManager.getInstance().getZone(npc, L2EffectZone.class); if (zone == null) { @@ -213,7 +213,7 @@ public final class DenOfEvil extends AbstractNpcAI final L2Npc npc = (L2Npc) character; if (CommonUtil.contains(EYE_IDS, npc.getId())) { - ThreadPoolManager.getInstance().scheduleAi(new RespawnNewEye(npc.getLocation()), 15000); + ThreadPoolManager.schedule(new RespawnNewEye(npc.getLocation()), 15000); } } } diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/FantasyIsle/Parade.java b/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/FantasyIsle/Parade.java index 666135ade5..e42870fd2d 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/FantasyIsle/Parade.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/FantasyIsle/Parade.java @@ -129,11 +129,11 @@ public final class Parade extends AbstractNpcAI { // Starts at 8:00 and repeats every 6 hours. final long diff = timeLeftMilli(8, 0, 0), cycle = 3600000L; - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Start(), diff, cycle); + ThreadPoolManager.scheduleAtFixedRate(new Start(), diff, cycle); // Test - Starts 3 minutes after server startup and repeats every 20 minutes. // final long diff = timeLeftMilli(8, 0, 0), cycle = 600000L; - // ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Start(), 180000L, cycle); + // ThreadPoolManager.scheduleAtFixedRate(new Start(), 180000L, cycle); _log.info("Fantasy Isle: Parade starting at " + new SimpleDateFormat("yyyy/MM/dd HH:mm").format(System.currentTimeMillis() + diff) + " and is scheduled each next " + (cycle / 3600000) + " hours."); } @@ -171,9 +171,9 @@ public final class Parade extends AbstractNpcAI public void run() { load(); - spawnTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Spawn(), 0, 5000); - deleteTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Delete(), 10000, 1000); - cleanTask = ThreadPoolManager.getInstance().scheduleGeneral(new Clean(), 420000); + spawnTask = ThreadPoolManager.scheduleAtFixedRate(new Spawn(), 0, 5000); + deleteTask = ThreadPoolManager.scheduleAtFixedRate(new Delete(), 10000, 1000); + cleanTask = ThreadPoolManager.schedule(new Clean(), 420000); } } diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/GainakUnderground/GainakSiege.java b/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/GainakUnderground/GainakSiege.java index c767185165..4a0b8e79a7 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/GainakUnderground/GainakSiege.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/GainakUnderground/GainakSiege.java @@ -141,7 +141,7 @@ public final class GainakSiege extends AbstractNpcAI final L2SiegeZone zone = ZoneManager.getInstance().getZone(npc, L2SiegeZone.class); if ((zone != null) && (zone.getId() == 60019) && zone.isActive()) { - ThreadPoolManager.getInstance().scheduleAi(new RespawnNewAssassin(npc.getLocation()), 60000); + ThreadPoolManager.schedule(new RespawnNewAssassin(npc.getLocation()), 60000); } return super.onKill(npc, killer, isSummon); } diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/ImperialTomb/FourSepulchers/FourSepulchers.java b/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/ImperialTomb/FourSepulchers/FourSepulchers.java index 81460f0f4d..d53bc8c351 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/ImperialTomb/FourSepulchers/FourSepulchers.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/ImperialTomb/FourSepulchers/FourSepulchers.java @@ -256,7 +256,7 @@ public final class FourSepulchers extends AbstractNpcAI implements IGameXmlReade if ((doorInfo[0] == sepulcherId) && (doorInfo[1] == currentWave)) { openDoor(doorInfo[2], 0); - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { closeDoor(doorInfo[2], 0); }, 15000); @@ -578,7 +578,7 @@ public final class FourSepulchers extends AbstractNpcAI implements IGameXmlReade showHtmlFile(player, npcId + "-OK.html", npc, null); // Kick all players when/if time is over - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { ZoneManager.getInstance().getZoneById(MANAGER_ZONES.get(npcId)).oustAllPlayers(); }, TIME_ATTACK * 60 * 1000); diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/Rune/AltarOfSacrifice/AltarOfSacrifice.java b/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/Rune/AltarOfSacrifice/AltarOfSacrifice.java index cb37e1acbc..790799b0ad 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/Rune/AltarOfSacrifice/AltarOfSacrifice.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/Rune/AltarOfSacrifice/AltarOfSacrifice.java @@ -109,7 +109,7 @@ public class AltarOfSacrifice extends AbstractNpcAI private void sendMessage(L2Npc npc, NpcStringId npcString, int delay) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { if (npc != null) { diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/TalkingIsland/AwakeningMaster/AwakeningMaster.java b/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/TalkingIsland/AwakeningMaster/AwakeningMaster.java index 4a6324cdfd..4149992c67 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/TalkingIsland/AwakeningMaster/AwakeningMaster.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/TalkingIsland/AwakeningMaster/AwakeningMaster.java @@ -349,7 +349,7 @@ public final class AwakeningMaster extends AbstractNpcAI player.sendSkillList(); } - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { player.sendPacket(ExShowUsm.AWAKENING_END); }, 10000); diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/TalkingIsland/HarnakUndergroundRuinsZone/HarnakUndergroundRuinsZone.java b/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/TalkingIsland/HarnakUndergroundRuinsZone/HarnakUndergroundRuinsZone.java index 1078ee92a6..5b467277fa 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/TalkingIsland/HarnakUndergroundRuinsZone/HarnakUndergroundRuinsZone.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/ai/areas/TalkingIsland/HarnakUndergroundRuinsZone/HarnakUndergroundRuinsZone.java @@ -174,7 +174,7 @@ public class HarnakUndergroundRuinsZone extends AbstractNpcAI _templates.stream().forEach(t -> t.spawn(g -> String.valueOf(g.getName()).equalsIgnoreCase(zoneName.concat("_demonic")), null)); zone.getPlayersInside().forEach(temp -> temp.sendPacket(new ExSendUIEvent(temp, false, false, 600, 0, NpcStringId.DEMONIC_SYSTEM_ACTIVATED))); currentInfo.setZoneStage(7); - ThreadPoolManager.getInstance().scheduleGeneral(new changeZoneStage(zone), 600000); // 10min + ThreadPoolManager.schedule(new changeZoneStage(zone), 600000); // 10min } else { @@ -202,7 +202,7 @@ public class HarnakUndergroundRuinsZone extends AbstractNpcAI if (currentInfo.getZoneStage() < 6) { currentInfo.setZoneStage(currentInfo.getZoneStage() + 1); - ThreadPoolManager.getInstance().scheduleGeneral(new changeZoneStage(zone), 5000); + ThreadPoolManager.schedule(new changeZoneStage(zone), 5000); } } catch (Exception e) @@ -248,7 +248,7 @@ public class HarnakUndergroundRuinsZone extends AbstractNpcAI if (calcPoints >= 300) { calcPoints = 300; - ThreadPoolManager.getInstance().scheduleGeneral(new changeZoneStage(currentZone.getKey()), 1000); + ThreadPoolManager.schedule(new changeZoneStage(currentZone.getKey()), 1000); } currentInfo.setCurrentPoint(calcPoints); for (L2PcInstance player : currentZone.getKey().getPlayersInside()) diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/ai/bosses/QueenAnt/QueenAnt.java b/L2J_Mobius_Underground/dist/game/data/scripts/ai/bosses/QueenAnt/QueenAnt.java index 65c2ebbf40..6c0a28cefe 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/ai/bosses/QueenAnt/QueenAnt.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/ai/bosses/QueenAnt/QueenAnt.java @@ -258,7 +258,7 @@ public final class QueenAnt extends AbstractNpcAI { ((L2MonsterInstance) npc).getMinionList().spawnMinions(npc.getParameters().getMinionList("Privates")); } - _task = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new QueenAntTask(), 5 * 1000, 5 * 1000); + _task = ThreadPoolManager.scheduleAtFixedRate(new QueenAntTask(), 5 * 1000, 5 * 1000); break; } } diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/ai/others/EnergySeeds.java b/L2J_Mobius_Underground/dist/game/data/scripts/ai/others/EnergySeeds.java index ed7ca4eba8..55a016c369 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/ai/others/EnergySeeds.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/ai/others/EnergySeeds.java @@ -701,7 +701,7 @@ public final class EnergySeeds extends AbstractNpcAI public void scheduleRespawn(long waitTime) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { // if the AI is inactive, do not spawn the NPC if (isSeedActive(_seedId)) diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/ai/others/NpcBuffers/NpcBufferAI.java b/L2J_Mobius_Underground/dist/game/data/scripts/ai/others/NpcBuffers/NpcBufferAI.java index 5728cca206..9cef571b2a 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/ai/others/NpcBuffers/NpcBufferAI.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/ai/others/NpcBuffers/NpcBufferAI.java @@ -90,6 +90,6 @@ public class NpcBufferAI implements Runnable _npc.doCast(skill); - ThreadPoolManager.getInstance().scheduleGeneral(this, skill.getReuseDelay()); + ThreadPoolManager.schedule(this, skill.getReuseDelay()); } } \ No newline at end of file diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/ai/others/NpcBuffers/NpcBuffers.java b/L2J_Mobius_Underground/dist/game/data/scripts/ai/others/NpcBuffers/NpcBuffers.java index 148b7d78e3..faf003a11c 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/ai/others/NpcBuffers/NpcBuffers.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/ai/others/NpcBuffers/NpcBuffers.java @@ -53,7 +53,7 @@ public final class NpcBuffers extends AbstractNpcAI final NpcBufferData data = _npcBuffers.getNpcBuffer(npc.getId()); for (NpcBufferSkillData skill : data.getSkills()) { - ThreadPoolManager.getInstance().scheduleAi(new NpcBufferAI(npc, skill), skill.getInitialDelay()); + ThreadPoolManager.schedule(new NpcBufferAI(npc, skill), skill.getInitialDelay()); } return super.onSpawn(npc); } diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/custom/events/Elpies/Elpies.java b/L2J_Mobius_Underground/dist/game/data/scripts/custom/events/Elpies/Elpies.java index 93bb20bf3c..f8601fd797 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/custom/events/Elpies/Elpies.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/custom/events/Elpies/Elpies.java @@ -112,7 +112,7 @@ public final class Elpies extends Event Broadcast.toAllOnlinePlayers("Help us exterminate them!"); Broadcast.toAllOnlinePlayers("You have " + EVENT_DURATION_MINUTES + " minutes!"); - _eventTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _eventTask = ThreadPoolManager.schedule(() -> { Broadcast.toAllOnlinePlayers("Time is up!"); eventStop(); diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/custom/events/Race/Race.java b/L2J_Mobius_Underground/dist/game/data/scripts/custom/events/Race/Race.java index d4f444d6c8..54832d23fd 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/custom/events/Race/Race.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/custom/events/Race/Race.java @@ -138,7 +138,7 @@ public final class Race extends Event Broadcast.toAllOnlinePlayers("Visit Event Manager in Dion village and signup, you have " + _time_register + " min before Race Start..."); // Schedule Event end - _eventTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> StartRace(), _time_register * 60 * 1000); + _eventTask = ThreadPoolManager.schedule(() -> StartRace(), _time_register * 60 * 1000); return true; @@ -181,7 +181,7 @@ public final class Race extends Event } } // Schedule timeup for Race - _eventTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> timeUp(), _time_race * 60 * 1000); + _eventTask = ThreadPoolManager.schedule(() -> timeUp(), _time_race * 60 * 1000); } @Override diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_Mobius_Underground/dist/game/data/scripts/handlers/MasterHandler.java index 6a7c28d289..e172ebdbf7 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/handlers/MasterHandler.java @@ -308,7 +308,6 @@ import handlers.telnethandlers.server.ServerAbort; import handlers.telnethandlers.server.ServerRestart; import handlers.telnethandlers.server.ServerShutdown; import handlers.telnethandlers.server.Status; -import handlers.telnethandlers.server.ThreadPoolDebug; import handlers.usercommandhandlers.ChannelDelete; import handlers.usercommandhandlers.ChannelInfo; import handlers.usercommandhandlers.ChannelLeave; @@ -749,7 +748,6 @@ public class MasterHandler TelnetServer.getInstance().addHandler(new ServerRestart()); TelnetServer.getInstance().addHandler(new ServerShutdown()); TelnetServer.getInstance().addHandler(new Status()); - TelnetServer.getInstance().addHandler(new ThreadPoolDebug()); TelnetServer.getInstance().addHandler(new handlers.telnethandlers.server.Debug()); } diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/handlers/admincommandhandlers/AdminMonsterRace.java b/L2J_Mobius_Underground/dist/game/data/scripts/handlers/admincommandhandlers/AdminMonsterRace.java index b9f123e18c..b986361b8c 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/handlers/admincommandhandlers/AdminMonsterRace.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/handlers/admincommandhandlers/AdminMonsterRace.java @@ -107,7 +107,7 @@ public class AdminMonsterRace implements IAdminCommandHandler activeChar.sendPacket(spk); activeChar.broadcastPacket(spk); - ThreadPoolManager.getInstance().scheduleGeneral(new RunRace(codes, activeChar), 5000); + ThreadPoolManager.schedule(new RunRace(codes, activeChar), 5000); } } @@ -137,7 +137,7 @@ public class AdminMonsterRace implements IAdminCommandHandler final MonRaceInfo spk = new MonRaceInfo(codes[2][0], codes[2][1], MonsterRace.getInstance().getMonsters(), MonsterRace.getInstance().getSpeeds()); activeChar.sendPacket(spk); activeChar.broadcastPacket(spk); - ThreadPoolManager.getInstance().scheduleGeneral(new RunEnd(activeChar), 30000); + ThreadPoolManager.schedule(new RunEnd(activeChar), 30000); } } diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/handlers/admincommandhandlers/AdminServerInfo.java b/L2J_Mobius_Underground/dist/game/data/scripts/handlers/admincommandhandlers/AdminServerInfo.java index 12a2f312c2..6796381333 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/handlers/admincommandhandlers/AdminServerInfo.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/handlers/admincommandhandlers/AdminServerInfo.java @@ -20,14 +20,12 @@ import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Date; import java.util.HashSet; -import java.util.Map.Entry; import java.util.Set; import java.util.concurrent.TimeUnit; import com.l2jmobius.Config; import com.l2jmobius.gameserver.GameServer; import com.l2jmobius.gameserver.GameTimeController; -import com.l2jmobius.gameserver.ThreadPoolManager; import com.l2jmobius.gameserver.cache.HtmCache; import com.l2jmobius.gameserver.data.xml.impl.AdminData; import com.l2jmobius.gameserver.handler.IAdminCommandHandler; @@ -72,14 +70,6 @@ public class AdminServerInfo implements IAdminCommandHandler html.replace("%usedMem%", (RunTime.maxMemory() / mb) - (((RunTime.maxMemory() - RunTime.totalMemory()) + RunTime.freeMemory()) / mb)); html.replace("%freeMem%", ((RunTime.maxMemory() - RunTime.totalMemory()) + RunTime.freeMemory()) / mb); html.replace("%totalMem%", Runtime.getRuntime().maxMemory() / 1048576); - html.replace("%theardInfoGen%", buildTheardInfo("GENERAL")); - html.replace("%theardInfoEff%", buildTheardInfo("EFFECTS")); - html.replace("%theardInfoAi%", buildTheardInfo("AI")); - html.replace("%theardInfoEvent%", buildTheardInfo("EVENT")); - html.replace("%theardInfoPack%", buildTheardInfo("PACKETS")); - html.replace("%theardInfoIOPack%", buildTheardInfo("IOPACKETS")); - html.replace("%theardInfoGenTask%", buildTheardInfo("GENERAL_TASKS")); - html.replace("%theardInfoEvnTask%", buildTheardInfo("EVENT_TASKS")); activeChar.sendPacket(html); } return true; @@ -96,22 +86,6 @@ public class AdminServerInfo implements IAdminCommandHandler return days + " Days, " + hours + " Hours, " + TimeUnit.MILLISECONDS.toMinutes(time) + " Minutes"; } - private String buildTheardInfo(String category) - { - final StringBuilder tb = new StringBuilder(); - - tb.append(""); - for (Entry info : ThreadPoolManager.getInstance().getStats(category).getSet().entrySet()) - { - tb.append(""); - tb.append(""); - tb.append(""); - tb.append(""); - } - tb.append("
" + info.getKey() + ":" + info.getValue() + "
"); - return tb.toString(); - } - private int getPlayersCount(String type) { switch (type) diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/handlers/admincommandhandlers/AdminTest.java b/L2J_Mobius_Underground/dist/game/data/scripts/handlers/admincommandhandlers/AdminTest.java index 3033172007..b64a8a1504 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/handlers/admincommandhandlers/AdminTest.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/handlers/admincommandhandlers/AdminTest.java @@ -46,7 +46,7 @@ public class AdminTest implements IAdminCommandHandler { if (command.equals("admin_stats")) { - for (String line : ThreadPoolManager.getInstance().getStats()) + for (String line : ThreadPoolManager.getStats()) { activeChar.sendMessage(line); } diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java b/L2J_Mobius_Underground/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java index 84f3d3d721..bd3295b928 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java @@ -57,7 +57,7 @@ public class ClassChange extends AbstractEffect { final L2PcInstance player = effected.getActingPlayer(); // TODO: FIX ME - Executing 1 second later otherwise interupted exception during storeCharBase() - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { final int activeClass = player.getClassId().getId(); diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/handlers/effecthandlers/ServitorShare.java b/L2J_Mobius_Underground/dist/game/data/scripts/handlers/effecthandlers/ServitorShare.java index 41b8a93749..02f29f0a1a 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/handlers/effecthandlers/ServitorShare.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/handlers/effecthandlers/ServitorShare.java @@ -67,7 +67,7 @@ public final class ServitorShare extends AbstractEffect if (effected != null) { - ThreadPoolManager.getInstance().scheduleEffect(new ScheduledEffectExitTask(effected, info.getSkill().getId()), 100); + ThreadPoolManager.schedule(new ScheduledEffectExitTask(effected, info.getSkill().getId()), 100); } } } diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/handlers/punishmenthandlers/JailHandler.java b/L2J_Mobius_Underground/dist/game/data/scripts/handlers/punishmenthandlers/JailHandler.java index ad753cf33d..6618f26888 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/handlers/punishmenthandlers/JailHandler.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/handlers/punishmenthandlers/JailHandler.java @@ -162,7 +162,7 @@ public class JailHandler implements IPunishmentHandler OlympiadManager.getInstance().removeDisconnectedCompetitor(player); } - ThreadPoolManager.getInstance().scheduleGeneral(new TeleportTask(player, L2JailZone.getLocationIn()), 2000); + ThreadPoolManager.schedule(new TeleportTask(player, L2JailZone.getLocationIn()), 2000); // Open a Html message to inform the player final NpcHtmlMessage msg = new NpcHtmlMessage(); @@ -198,7 +198,7 @@ public class JailHandler implements IPunishmentHandler */ private static void removeFromPlayer(L2PcInstance player) { - ThreadPoolManager.getInstance().scheduleGeneral(new TeleportTask(player, L2JailZone.getLocationOut()), 2000); + ThreadPoolManager.schedule(new TeleportTask(player, L2JailZone.getLocationOut()), 2000); // Open a Html message to inform the player final NpcHtmlMessage msg = new NpcHtmlMessage(); diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/handlers/telnethandlers/server/Debug.java b/L2J_Mobius_Underground/dist/game/data/scripts/handlers/telnethandlers/server/Debug.java index c58d8b8bc4..612ca5cdc7 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/handlers/telnethandlers/server/Debug.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/handlers/telnethandlers/server/Debug.java @@ -68,7 +68,7 @@ public class Debug implements ITelnetCommand @Override public String getUsage() { - return "Debug "; + return "Debug "; } @Override @@ -108,90 +108,6 @@ public class Debug implements ITelnetCommand player.sendPacket(sp); return "Packet has been sent!"; } - case "PacketTP": - { - final String str = ThreadPoolManager.getInstance().getPacketStats(); - int i = 0; - File f = new File("./log/StackTrace-PacketTP-" + i + ".txt"); - while (f.exists()) - { - i++; - f = new File("./log/StackTrace-PacketTP-" + i + ".txt"); - } - f.getParentFile().mkdirs(); - try - { - Files.write(f.toPath(), str.getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE); - } - catch (IOException e) - { - LOGGER.log(Level.WARNING, "Couldn't write packet tp.", e); - } - return str; - } - case "IOPacketTP": - { - final String str = ThreadPoolManager.getInstance().getIOPacketStats(); - int i = 0; - File f = new File("./log/StackTrace-IOPacketTP-" + i + ".txt"); - while (f.exists()) - { - i++; - f = new File("./log/StackTrace-IOPacketTP-" + i + ".txt"); - } - f.getParentFile().mkdirs(); - try - { - Files.write(f.toPath(), str.getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE); - } - catch (IOException e) - { - LOGGER.log(Level.WARNING, "Couldn't write packet tp.", e); - } - return str; - } - case "GeneralTP": - { - final String str = ThreadPoolManager.getInstance().getGeneralStats(); - int i = 0; - File f = new File("./log/StackTrace-GeneralTP-" + i + ".txt"); - while (f.exists()) - { - i++; - f = new File("./log/StackTrace-GeneralTP-" + i + ".txt"); - } - f.getParentFile().mkdirs(); - try - { - Files.write(f.toPath(), str.getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE); - } - catch (IOException e) - { - LOGGER.log(Level.WARNING, "Couldn't write packet tp.", e); - } - return str; - } - case "GeneralScheduledTP": - { - final String str = ThreadPoolManager.getInstance().getGeneralStats(); - int i = 0; - File f = new File("./log/StackTrace-GeneralScheduledTP-" + i + ".txt"); - while (f.exists()) - { - i++; - f = new File("./log/StackTrace-GeneralScheduledTP-" + i + ".txt"); - } - f.getParentFile().mkdirs(); - try - { - Files.write(f.toPath(), str.getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE); - } - catch (IOException e) - { - LOGGER.log(Level.WARNING, "Couldn't write packet tp.", e); - } - return str; - } case "full": { final Calendar cal = Calendar.getInstance(); @@ -283,7 +199,7 @@ public class Debug implements ITelnetCommand } sb.append("\r\n## Thread Pool Manager Statistics ##\r\n"); - for (String line : ThreadPoolManager.getInstance().getStats()) + for (String line : ThreadPoolManager.getStats()) { sb.append(line); sb.append("\r\n"); diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/handlers/telnethandlers/server/Performance.java b/L2J_Mobius_Underground/dist/game/data/scripts/handlers/telnethandlers/server/Performance.java index 7c609ac673..4ca843967c 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/handlers/telnethandlers/server/Performance.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/handlers/telnethandlers/server/Performance.java @@ -42,9 +42,9 @@ public class Performance implements ITelnetCommand @Override public String handle(ChannelHandlerContext ctx, String[] args) { - ThreadPoolManager.getInstance().purge(); + // ThreadPoolManager.purge(); final StringBuilder sb = new StringBuilder(); - for (String line : ThreadPoolManager.getInstance().getStats()) + for (String line : ThreadPoolManager.getStats()) { sb.append(line + Config.EOL); } diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/handlers/telnethandlers/server/Purge.java b/L2J_Mobius_Underground/dist/game/data/scripts/handlers/telnethandlers/server/Purge.java index 71f7c52abc..0ae4d70bdf 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/handlers/telnethandlers/server/Purge.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/handlers/telnethandlers/server/Purge.java @@ -42,9 +42,9 @@ public class Purge implements ITelnetCommand @Override public String handle(ChannelHandlerContext ctx, String[] args) { - ThreadPoolManager.getInstance().purge(); + ThreadPoolManager.purge(); final StringBuilder sb = new StringBuilder("STATUS OF THREAD POOLS AFTER PURGE COMMAND:" + Config.EOL); - for (String line : ThreadPoolManager.getInstance().getStats()) + for (String line : ThreadPoolManager.getStats()) { sb.append(line + Config.EOL); } diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/handlers/telnethandlers/server/ThreadPoolDebug.java b/L2J_Mobius_Underground/dist/game/data/scripts/handlers/telnethandlers/server/ThreadPoolDebug.java deleted file mode 100644 index f984c7f2cb..0000000000 --- a/L2J_Mobius_Underground/dist/game/data/scripts/handlers/telnethandlers/server/ThreadPoolDebug.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.telnethandlers.server; - -import java.lang.reflect.Field; -import java.util.Comparator; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.FutureTask; -import java.util.concurrent.ScheduledThreadPoolExecutor; -import java.util.logging.Level; -import java.util.logging.Logger; - -import com.l2jmobius.Config; -import com.l2jmobius.gameserver.ThreadPoolManager; -import com.l2jmobius.gameserver.ThreadPoolManager.RunnableWrapper; -import com.l2jmobius.gameserver.network.telnet.ITelnetCommand; - -import io.netty.channel.ChannelHandlerContext; - -/** - * @author UnAfraid - */ -public class ThreadPoolDebug implements ITelnetCommand -{ - private static final Logger LOGGER = Logger.getLogger(ThreadPoolDebug.class.getName()); - - @Override - public String getCommand() - { - return "threadpooldebug"; - } - - @Override - public String getUsage() - { - return "threadpooldebug [effect, general, ai, events]"; - } - - @Override - public String handle(ChannelHandlerContext ctx, String[] args) - { - String pool = "_generalScheduledThreadPool"; - if (args.length > 0) - { - switch (args[0]) - { - case "effect": - { - pool = "_effectsScheduledThreadPool"; - break; - } - case "general": - { - pool = "_generalScheduledThreadPool"; - break; - } - case "ai": - { - pool = "_aiScheduledThreadPool"; - break; - } - case "events": - { - pool = "_eventScheduledThreadPool"; - break; - } - default: - { - return args[0] + " is not implemented!"; - } - } - } - final ScheduledThreadPoolExecutor executor = getObject(ThreadPoolManager.class, ThreadPoolManager.getInstance(), pool, ScheduledThreadPoolExecutor.class); - if (executor == null) - { - return "Couldn't retreive " + pool + "!"; - } - - Class adapterClass; - try - { - adapterClass = Class.forName("java.util.concurrent.Executors$RunnableAdapter"); - } - catch (Exception e) - { - return e.getMessage(); - } - - final Map tasks = new HashMap<>(); - for (Runnable run : executor.getQueue()) - { - try - { - if (run instanceof FutureTask) - { - final Object callableObject = getObject(FutureTask.class, run, "callable", Object.class); - final Object taskObject = getObject(adapterClass, callableObject, "task", Object.class); - - if (taskObject instanceof RunnableWrapper) - { - final Runnable task = getObject(RunnableWrapper.class, taskObject, "_r", Runnable.class); - final String name = task.getClass().getName(); - final int times = tasks.containsKey(name) ? tasks.get(name) : 0; - tasks.put(name, times + 1); - } - } - } - catch (Exception e) - { - e.printStackTrace(); - } - } - - final StringBuilder sb = new StringBuilder(); - sb.append(pool + " queue size: " + executor.getQueue().size() + Config.EOL); - - tasks.entrySet().stream().sorted(Comparator.comparingInt(Entry::getValue)).forEach(entry -> sb.append("Class: " + entry.getKey() + " = " + entry.getValue() + Config.EOL)); - - return sb.toString(); - } - - private static T getObject(Class sourceClass, Object sourceInstance, String fieldName, Class targetClass) - { - try - { - final Field field = sourceClass.getDeclaredField(fieldName); - - // Mark down if field was accessible - final boolean isAccessible = field.isAccessible(); - - // Enforce accessible to retrieve the object associated with this field - if (!isAccessible) - { - field.setAccessible(true); - } - - // Get the object - final Object fieldObject = field.get(sourceInstance); - - // Restore the original accessible state. - field.setAccessible(isAccessible); - - // Make sure the object is the one we expect to be - if (targetClass.isInstance(fieldObject)) - { - return targetClass.cast(fieldObject); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Error while retrieving object of " + sourceInstance.getClass().getName() + "." + fieldName, e); - } - return null; - } -} diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/instances/CastleDungeon/CastleDungeon.java b/L2J_Mobius_Underground/dist/game/data/scripts/instances/CastleDungeon/CastleDungeon.java index f6606acc88..4baa7c3145 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/instances/CastleDungeon/CastleDungeon.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/instances/CastleDungeon/CastleDungeon.java @@ -22,7 +22,6 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; import com.l2jmobius.commons.util.CommonUtil; import com.l2jmobius.gameserver.ThreadPoolManager; @@ -203,7 +202,7 @@ public final class CastleDungeon extends AbstractInstance */ private void spawnRaid(Instance instance) { - final ScheduledFuture spawnTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> + final ScheduledFuture spawnTask = ThreadPoolManager.schedule(() -> { // Get template id of raid final int npcId; @@ -230,7 +229,7 @@ public final class CastleDungeon extends AbstractInstance // Unset spawn task reference instance.setParameter("spawnTask", null); - }, 2, TimeUnit.MINUTES); + }, 2 * 60 * 1000); // 2 minutes // Save timer to instance world instance.setParameter("spawnTask", spawnTask); diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/instances/ChambersOfDelusion/ChamberOfDelusion.java b/L2J_Mobius_Underground/dist/game/data/scripts/instances/ChambersOfDelusion/ChamberOfDelusion.java index dd710244f9..2f9e28fa07 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/instances/ChambersOfDelusion/ChamberOfDelusion.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/instances/ChambersOfDelusion/ChamberOfDelusion.java @@ -111,7 +111,7 @@ public final class ChamberOfDelusion extends AbstractInstance changeRoom(instance); // Start banish task - final ScheduledFuture banishTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(() -> + final ScheduledFuture banishTask = ThreadPoolManager.scheduleAtFixedRate(() -> { if (instance.getRemainingTime() < 60000) { @@ -410,7 +410,7 @@ public final class ChamberOfDelusion extends AbstractInstance final long nextInterval = (bossRoom) ? 60000L : (ROOM_CHANGE_INTERVAL + getRandom(ROOM_CHANGE_RANDOM_TIME)) * 1000L; if (world.getRemainingTime() > nextInterval) { - final ScheduledFuture roomChangeTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> + final ScheduledFuture roomChangeTask = ThreadPoolManager.schedule(() -> { try { diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/instances/FortressDungeon/FortressDungeon.java b/L2J_Mobius_Underground/dist/game/data/scripts/instances/FortressDungeon/FortressDungeon.java index ee2492b568..31def525c1 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/instances/FortressDungeon/FortressDungeon.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/instances/FortressDungeon/FortressDungeon.java @@ -22,7 +22,6 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; import com.l2jmobius.commons.util.CommonUtil; import com.l2jmobius.gameserver.ThreadPoolManager; @@ -226,7 +225,7 @@ public final class FortressDungeon extends AbstractInstance */ private void spawnRaid(Instance instance) { - final ScheduledFuture spawnTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> + final ScheduledFuture spawnTask = ThreadPoolManager.schedule(() -> { // Get template id of raid final int npcId; @@ -247,7 +246,7 @@ public final class FortressDungeon extends AbstractInstance // Unset spawn task reference instance.setParameter("spawnTask", null); - }, 2, TimeUnit.MINUTES); + }, 2 * 60 * 1000); // 2 minutes // Save timer to instance world instance.setParameter("spawnTask", spawnTask); diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/quests/Q10292_SevenSignsGirlOfDoubt/Q10292_SevenSignsGirlOfDoubt.java b/L2J_Mobius_Underground/dist/game/data/scripts/quests/Q10292_SevenSignsGirlOfDoubt/Q10292_SevenSignsGirlOfDoubt.java index 3f089b1640..bfc2a993c2 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/quests/Q10292_SevenSignsGirlOfDoubt/Q10292_SevenSignsGirlOfDoubt.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/quests/Q10292_SevenSignsGirlOfDoubt/Q10292_SevenSignsGirlOfDoubt.java @@ -168,7 +168,7 @@ public final class Q10292_SevenSignsGirlOfDoubt extends Quest creature1.setRandomWalking(true); final L2Npc creature2 = addSpawn(CREATURE_OF_THE_DUSK2, 89524, -238131, -9632, 56, false, 0, false, player.getInstanceId()); creature2.setRandomWalking(true); - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { creature1.deleteMe(); creature2.deleteMe(); diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/vehicles/AirShipController.java b/L2J_Mobius_Underground/dist/game/data/scripts/vehicles/AirShipController.java index b87a53cbb1..bd5264cfe0 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/vehicles/AirShipController.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/vehicles/AirShipController.java @@ -291,11 +291,11 @@ public abstract class AirShipController extends AbstractNpcAI playMovie(_dockedShip.getPassengers(), _movie); } - ThreadPoolManager.getInstance().scheduleGeneral(_decayTask, 1000); + ThreadPoolManager.schedule(_decayTask, 1000); } else { - _departSchedule = ThreadPoolManager.getInstance().scheduleGeneral(_departTask, DEPART_INTERVAL); + _departSchedule = ThreadPoolManager.schedule(_departTask, DEPART_INTERVAL); } } } diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/vehicles/AirShipGludioGracia/AirShipGludioGracia.java b/L2J_Mobius_Underground/dist/game/data/scripts/vehicles/AirShipGludioGracia/AirShipGludioGracia.java index 72d293c6ba..1246d1204e 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/vehicles/AirShipGludioGracia/AirShipGludioGracia.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/vehicles/AirShipGludioGracia/AirShipGludioGracia.java @@ -248,7 +248,7 @@ public final class AirShipGludioGracia extends AbstractNpcAI implements Runnable case 1: // _ship.teleToLocation(-167874, 256731, -509, 41035, false); _ship.setOustLoc(OUST_GRACIA); - ThreadPoolManager.getInstance().scheduleGeneral(this, 5000); + ThreadPoolManager.schedule(this, 5000); break; case 2: _ship.executePath(WARPGATE_TO_GRACIA); @@ -257,7 +257,7 @@ public final class AirShipGludioGracia extends AbstractNpcAI implements Runnable broadcastInGracia(NpcStringId.THE_REGULARLY_SCHEDULED_AIRSHIP_HAS_ARRIVED_IT_WILL_DEPART_FOR_THE_ADEN_CONTINENT_IN_1_MINUTE); _ship.setInDock(GRACIA_DOCK_ID); _ship.oustPlayers(); - ThreadPoolManager.getInstance().scheduleGeneral(this, 60000); + ThreadPoolManager.schedule(this, 60000); break; case 4: broadcastInGracia(NpcStringId.THE_REGULARLY_SCHEDULED_AIRSHIP_THAT_FLIES_TO_THE_ADEN_CONTINENT_HAS_DEPARTED); @@ -267,7 +267,7 @@ public final class AirShipGludioGracia extends AbstractNpcAI implements Runnable case 5: // _ship.teleToLocation(-157261, 255664, 221, 64781, false); _ship.setOustLoc(OUST_GLUDIO); - ThreadPoolManager.getInstance().scheduleGeneral(this, 5000); + ThreadPoolManager.schedule(this, 5000); break; case 6: _ship.executePath(WARPGATE_TO_GLUDIO); @@ -276,7 +276,7 @@ public final class AirShipGludioGracia extends AbstractNpcAI implements Runnable broadcastInGludio(NpcStringId.THE_REGULARLY_SCHEDULED_AIRSHIP_HAS_ARRIVED_IT_WILL_DEPART_FOR_THE_GRACIA_CONTINENT_IN_1_MINUTE); _ship.setInDock(GLUDIO_DOCK_ID); _ship.oustPlayers(); - ThreadPoolManager.getInstance().scheduleGeneral(this, 60000); + ThreadPoolManager.schedule(this, 60000); break; } _cycle++; diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/vehicles/BoatGludinRune.java b/L2J_Mobius_Underground/dist/game/data/scripts/vehicles/BoatGludinRune.java index 35a160a405..746b80fafd 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/vehicles/BoatGludinRune.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/vehicles/BoatGludinRune.java @@ -175,15 +175,15 @@ public class BoatGludinRune implements Runnable { case 0: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], LEAVE_GLUDIN5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 1: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], LEAVE_GLUDIN1); - ThreadPoolManager.getInstance().scheduleGeneral(this, 40000); + ThreadPoolManager.schedule(this, 40000); break; case 2: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], LEAVE_GLUDIN0); - ThreadPoolManager.getInstance().scheduleGeneral(this, 20000); + ThreadPoolManager.schedule(this, 20000); break; case 3: BoatManager.getInstance().dockShip(BoatManager.GLUDIN_HARBOR, false); @@ -191,19 +191,19 @@ public class BoatGludinRune implements Runnable _boat.broadcastPacket(GLUDIN_SOUND); _boat.payForRide(7905, 1, -90015, 150422, -3610); _boat.executePath(GLUDIN_TO_RUNE); - ThreadPoolManager.getInstance().scheduleGeneral(this, 250000); + ThreadPoolManager.schedule(this, 250000); break; case 4: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], ARRIVAL_RUNE15); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 5: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], ARRIVAL_RUNE10); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 6: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], ARRIVAL_RUNE5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 7: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], ARRIVAL_RUNE1); @@ -222,7 +222,7 @@ public class BoatGludinRune implements Runnable _shoutCount = 0; } - ThreadPoolManager.getInstance().scheduleGeneral(this, 5000); + ThreadPoolManager.schedule(this, 5000); return; } _boat.executePath(RUNE_DOCK); @@ -231,19 +231,19 @@ public class BoatGludinRune implements Runnable BoatManager.getInstance().dockShip(BoatManager.RUNE_HARBOR, true); BoatManager.getInstance().broadcastPackets(RUNE_DOCK[0], GLUDIN_DOCK[0], ARRIVED_AT_RUNE, ARRIVED_AT_RUNE_2); _boat.broadcastPacket(RUNE_SOUND); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 10: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], LEAVE_RUNE5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 11: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], LEAVE_RUNE1); - ThreadPoolManager.getInstance().scheduleGeneral(this, 40000); + ThreadPoolManager.schedule(this, 40000); break; case 12: BoatManager.getInstance().broadcastPacket(RUNE_DOCK[0], GLUDIN_DOCK[0], LEAVE_RUNE0); - ThreadPoolManager.getInstance().scheduleGeneral(this, 20000); + ThreadPoolManager.schedule(this, 20000); break; case 13: BoatManager.getInstance().dockShip(BoatManager.RUNE_HARBOR, false); @@ -251,19 +251,19 @@ public class BoatGludinRune implements Runnable _boat.broadcastPacket(RUNE_SOUND); _boat.payForRide(7904, 1, 34513, -38009, -3640); _boat.executePath(RUNE_TO_GLUDIN); - ThreadPoolManager.getInstance().scheduleGeneral(this, 60000); + ThreadPoolManager.schedule(this, 60000); break; case 14: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], ARRIVAL_GLUDIN15); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 15: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], ARRIVAL_GLUDIN10); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 16: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], ARRIVAL_GLUDIN5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 17: BoatManager.getInstance().broadcastPacket(GLUDIN_DOCK[0], RUNE_DOCK[0], ARRIVAL_GLUDIN1); @@ -282,7 +282,7 @@ public class BoatGludinRune implements Runnable _shoutCount = 0; } - ThreadPoolManager.getInstance().scheduleGeneral(this, 5000); + ThreadPoolManager.schedule(this, 5000); return; } _boat.executePath(GLUDIN_DOCK); @@ -291,7 +291,7 @@ public class BoatGludinRune implements Runnable BoatManager.getInstance().dockShip(BoatManager.GLUDIN_HARBOR, true); BoatManager.getInstance().broadcastPackets(GLUDIN_DOCK[0], RUNE_DOCK[0], ARRIVED_AT_GLUDIN, ARRIVED_AT_GLUDIN_2); _boat.broadcastPacket(GLUDIN_SOUND); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; } _shoutCount = 0; diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/vehicles/BoatInnadrilTour.java b/L2J_Mobius_Underground/dist/game/data/scripts/vehicles/BoatInnadrilTour.java index d7a909f26b..0c6be76018 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/vehicles/BoatInnadrilTour.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/vehicles/BoatInnadrilTour.java @@ -118,44 +118,44 @@ public class BoatInnadrilTour implements Runnable { case 0: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, LEAVE_INNADRIL5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 1: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, LEAVE_INNADRIL1); - ThreadPoolManager.getInstance().scheduleGeneral(this, 40000); + ThreadPoolManager.schedule(this, 40000); break; case 2: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, LEAVE_INNADRIL0); - ThreadPoolManager.getInstance().scheduleGeneral(this, 20000); + ThreadPoolManager.schedule(this, 20000); break; case 3: BoatManager.getInstance().broadcastPackets(DOCK, DOCK, LEAVING_INNADRIL, INNADRIL_SOUND); _boat.payForRide(0, 1, 107092, 219098, -3952); _boat.executePath(TOUR); - ThreadPoolManager.getInstance().scheduleGeneral(this, 650000); + ThreadPoolManager.schedule(this, 650000); break; case 4: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, ARRIVAL20); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 5: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, ARRIVAL15); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 6: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, ARRIVAL10); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; case 7: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, ARRIVAL5); - ThreadPoolManager.getInstance().scheduleGeneral(this, 240000); + ThreadPoolManager.schedule(this, 240000); break; case 8: BoatManager.getInstance().broadcastPacket(DOCK, DOCK, ARRIVAL1); break; case 9: BoatManager.getInstance().broadcastPackets(DOCK, DOCK, ARRIVED_AT_INNADRIL, INNADRIL_SOUND); - ThreadPoolManager.getInstance().scheduleGeneral(this, 300000); + ThreadPoolManager.schedule(this, 300000); break; } _cycle++; diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/vehicles/BoatRunePrimeval.java b/L2J_Mobius_Underground/dist/game/data/scripts/vehicles/BoatRunePrimeval.java index 6de5286c16..7359b6bdec 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/vehicles/BoatRunePrimeval.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/vehicles/BoatRunePrimeval.java @@ -117,7 +117,7 @@ public class BoatRunePrimeval implements Runnable break; case 1: BoatManager.getInstance().broadcastPackets(PRIMEVAL_DOCK, RUNE_DOCK[0], ARRIVED_AT_PRIMEVAL, ARRIVED_AT_PRIMEVAL_2, PRIMEVAL_SOUND); - ThreadPoolManager.getInstance().scheduleGeneral(this, 180000); + ThreadPoolManager.schedule(this, 180000); break; case 2: BoatManager.getInstance().broadcastPackets(PRIMEVAL_DOCK, RUNE_DOCK[0], LEAVING_PRIMEVAL, PRIMEVAL_SOUND); @@ -138,7 +138,7 @@ public class BoatRunePrimeval implements Runnable _shoutCount = 0; } - ThreadPoolManager.getInstance().scheduleGeneral(this, 5000); + ThreadPoolManager.schedule(this, 5000); return; } _boat.executePath(RUNE_DOCK); @@ -146,7 +146,7 @@ public class BoatRunePrimeval implements Runnable case 4: BoatManager.getInstance().dockShip(BoatManager.RUNE_HARBOR, true); BoatManager.getInstance().broadcastPackets(RUNE_DOCK[0], PRIMEVAL_DOCK, ARRIVED_AT_RUNE, ARRIVED_AT_RUNE_2, RUNE_SOUND); - ThreadPoolManager.getInstance().scheduleGeneral(this, 180000); + ThreadPoolManager.schedule(this, 180000); break; } _shoutCount = 0; diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/Config.java b/L2J_Mobius_Underground/java/com/l2jmobius/Config.java index 3b85ec1b52..7e7e66747d 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/Config.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/Config.java @@ -426,14 +426,11 @@ public final class Config public static boolean ALT_DEV_NO_SPAWNS; public static boolean ALT_DEV_SHOW_QUESTS_LOAD_IN_LOGS; public static boolean ALT_DEV_SHOW_SCRIPTS_LOAD_IN_LOGS; - public static int THREAD_P_EFFECTS; - public static int THREAD_P_GENERAL; - public static int THREAD_E_EVENTS; - public static int GENERAL_PACKET_THREAD_CORE_SIZE; + public static int SCHEDULED_THREAD_POOL_COUNT; + public static int THREADS_PER_SCHEDULED_THREAD_POOL; + public static int INSTANT_THREAD_POOL_COUNT; + public static int THREADS_PER_INSTANT_THREAD_POOL; public static int IO_PACKET_THREAD_CORE_SIZE; - public static int GENERAL_THREAD_CORE_SIZE; - public static int AI_MAX_THREAD; - public static int EVENT_MAX_THREAD; public static boolean DEADLOCK_DETECTOR; public static int DEADLOCK_CHECK_INTERVAL; public static boolean RESTART_ON_DEADLOCK; @@ -1705,14 +1702,11 @@ public final class Config ALT_DEV_NO_SPAWNS = General.getBoolean("AltDevNoSpawns", false) || Boolean.getBoolean("nospawns"); ALT_DEV_SHOW_QUESTS_LOAD_IN_LOGS = General.getBoolean("AltDevShowQuestsLoadInLogs", false); ALT_DEV_SHOW_SCRIPTS_LOAD_IN_LOGS = General.getBoolean("AltDevShowScriptsLoadInLogs", false); - THREAD_P_EFFECTS = General.getInt("ThreadPoolSizeEffects", 10); - THREAD_P_GENERAL = General.getInt("ThreadPoolSizeGeneral", 13); - THREAD_E_EVENTS = General.getInt("ThreadPoolSizeEvents", 2); + SCHEDULED_THREAD_POOL_COUNT = General.getInt("ScheduledThreadPoolCount", -1); + THREADS_PER_SCHEDULED_THREAD_POOL = General.getInt("ThreadsPerScheduledThreadPool", 4); + INSTANT_THREAD_POOL_COUNT = General.getInt("InstantThreadPoolCount", -1); + THREADS_PER_INSTANT_THREAD_POOL = General.getInt("ThreadsPerInstantThreadPool", 2); IO_PACKET_THREAD_CORE_SIZE = General.getInt("UrgentPacketThreadCoreSize", 2); - GENERAL_PACKET_THREAD_CORE_SIZE = General.getInt("GeneralPacketThreadCoreSize", 4); - GENERAL_THREAD_CORE_SIZE = General.getInt("GeneralThreadCoreSize", 4); - AI_MAX_THREAD = General.getInt("AiMaxThread", 6); - EVENT_MAX_THREAD = General.getInt("EventsMaxThread", 5); DEADLOCK_DETECTOR = General.getBoolean("DeadLockDetector", true); DEADLOCK_CHECK_INTERVAL = General.getInt("DeadLockCheckInterval", 20); RESTART_ON_DEADLOCK = General.getBoolean("RestartOnDeadlock", false); diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/GameServer.java index 610b75b6b3..2c3c24aaf8 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/GameServer.java @@ -176,13 +176,15 @@ public class GameServer { final long serverLoadStart = System.currentTimeMillis(); + printSection("IdFactory"); if (!IdFactory.getInstance().isInitialized()) { LOGGER.severe(getClass().getSimpleName() + ": Could not read object IDs from database. Please check your configuration."); throw new Exception("Could not initialize the ID factory"); } - ThreadPoolManager.getInstance(); + printSection("ThreadPool"); + ThreadPoolManager.init(); EventDispatcher.getInstance(); // load script engines @@ -477,7 +479,6 @@ public class GameServer // Initialize config Config.load(); - printSection("Database"); DatabaseFactory.getInstance(); INSTANCE = new GameServer(); diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ItemsAutoDestroy.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ItemsAutoDestroy.java index c2a3271697..777bcbbd43 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ItemsAutoDestroy.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ItemsAutoDestroy.java @@ -31,7 +31,7 @@ public final class ItemsAutoDestroy protected ItemsAutoDestroy() { - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this::removeItems, 5000, 5000); + ThreadPoolManager.scheduleAtFixedRate(this::removeItems, 5000, 5000); } public static ItemsAutoDestroy getInstance() diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/RecipeController.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/RecipeController.java index 05e4b8586c..a84a29cd81 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/RecipeController.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/RecipeController.java @@ -109,7 +109,7 @@ public class RecipeController if (Config.ALT_GAME_CREATION) { _activeMakers.put(manufacturer.getObjectId(), maker); - ThreadPoolManager.getInstance().scheduleGeneral(maker, 100); + ThreadPoolManager.schedule(maker, 100); } else { @@ -158,7 +158,7 @@ public class RecipeController if (Config.ALT_GAME_CREATION) { _activeMakers.put(player.getObjectId(), maker); - ThreadPoolManager.getInstance().scheduleGeneral(maker, 100); + ThreadPoolManager.schedule(maker, 100); } else { @@ -354,7 +354,7 @@ public class RecipeController _player.broadcastPacket(msk); _player.sendPacket(new SetupGauge(_player.getObjectId(), 0, _delay)); - ThreadPoolManager.getInstance().scheduleGeneral(this, 100 + _delay); + ThreadPoolManager.schedule(this, 100 + _delay); } else { @@ -548,7 +548,7 @@ public class RecipeController if (Config.ALT_GAME_CREATION && isWait) { _player.sendPacket(new SetupGauge(_player.getObjectId(), 0, _delay)); - ThreadPoolManager.getInstance().scheduleGeneral(this, 100 + _delay); + ThreadPoolManager.schedule(this, 100 + _delay); } else { @@ -570,7 +570,7 @@ public class RecipeController if (Config.ALT_GAME_CREATION && isWait) { _player.sendPacket(new SetupGauge(_player.getObjectId(), 0, _delay)); - ThreadPoolManager.getInstance().scheduleGeneral(this, 100 + _delay); + ThreadPoolManager.schedule(this, 100 + _delay); } else { diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/Shutdown.java index 81dc2f141a..369510db24 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/Shutdown.java @@ -215,7 +215,7 @@ public class Shutdown extends Thread // stop all thread pools try { - ThreadPoolManager.getInstance().shutdown(); + ThreadPoolManager.shutdown(); LOGGER.info("Thread Pool Manager: Manager has been shut down(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); } catch (Throwable t) diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ThreadPoolManager.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ThreadPoolManager.java index 7e4beb26eb..5d85cdee27 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ThreadPoolManager.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ThreadPoolManager.java @@ -16,803 +16,284 @@ */ package com.l2jmobius.gameserver; -import java.lang.Thread.UncaughtExceptionHandler; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.RejectedExecutionException; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledThreadPoolExecutor; -import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.logging.Level; import java.util.logging.Logger; import com.l2jmobius.Config; -import com.l2jmobius.gameserver.model.StatsSet; /** + * This class handles thread pooling system. It relies on two ThreadPoolExecutor arrays, which poolers number is generated using config. *

- * This class is made to handle all the ThreadPools used in L2J. + * Those arrays hold following pools : *

- *

- * Scheduled Tasks can either be sent to a {@link #_generalScheduledThreadPool "general"} or {@link #_effectsScheduledThreadPool "effects"} {@link ScheduledThreadPoolExecutor ScheduledThreadPool}: The "effects" one is used for every effects (skills, hp/mp regen ...) while the "general" one is used - * for everything else that needs to be scheduled.
- * There also is an {@link #_aiScheduledThreadPool "ai"} {@link ScheduledThreadPoolExecutor ScheduledThreadPool} used for AI Tasks. - *

- *

- * Tasks can be sent to {@link ScheduledThreadPoolExecutor ScheduledThreadPool} either with: *

    - *
  • {@link #scheduleEffect(Runnable, long, TimeUnit)} and {@link #scheduleEffect(Runnable, long)} : for effects Tasks that needs to be executed only once.
  • - *
  • {@link #scheduleGeneral(Runnable, long, TimeUnit)} and {@link #scheduleGeneral(Runnable, long)} : for scheduled Tasks that needs to be executed once.
  • - *
  • {@link #scheduleAi(Runnable, long, TimeUnit)} and {@link #scheduleAi(Runnable, long)} : for AI Tasks that needs to be executed once
  • + *
  • Scheduled pool keeps a track about incoming, future events.
  • + *
  • Instant pool handles short-life events.
  • *
- * or - *
    - *
  • {@link #scheduleEffectAtFixedRate(Runnable, long, long, TimeUnit)} and {@link #scheduleEffectAtFixedRate(Runnable, long, long)} : for effects Tasks that needs to be executed periodicaly.
  • - *
  • {@link #scheduleGeneralAtFixedRate(Runnable, long, long, TimeUnit)} and {@link #scheduleGeneralAtFixedRate(Runnable, long, long)} : for scheduled Tasks that needs to be executed periodicaly.
  • - *
  • {@link #scheduleAiAtFixedRate(Runnable, long, long, TimeUnit)} and {@link #scheduleAiAtFixedRate(Runnable, long, long)} : for AI Tasks that needs to be executed periodicaly
  • - *
- *

- *

- * For all Tasks that should be executed with no delay asynchronously in a ThreadPool there also are usual {@link ThreadPoolExecutor ThreadPools} that can grow/shrink according to their load.: - *

    - *
  • {@link #_generalPacketsThreadPool GeneralPackets} where most packets handler are executed.
  • - *
  • {@link #_ioPacketsThreadPool I/O Packets} where all the i/o packets are executed.
  • - *
  • There will be an AI ThreadPool where AI events should be executed
  • - *
  • A general ThreadPool where everything else that needs to run asynchronously with no delay should be executed updates, SQL updates/inserts...)?
  • - *
- *

- * @author -Wooden- */ -public class ThreadPoolManager +public final class ThreadPoolManager { - private static final Logger LOGGER = Logger.getLogger(ThreadPoolManager.class.getName()); + protected static final Logger LOG = Logger.getLogger(ThreadPoolManager.class.getName()); - public static final class RunnableWrapper implements Runnable + private static final long MAX_DELAY = TimeUnit.NANOSECONDS.toMillis(Long.MAX_VALUE - System.nanoTime()) / 2; + + private static int _threadPoolRandomizer; + + protected static ScheduledThreadPoolExecutor[] _scheduledPools; + protected static ThreadPoolExecutor[] _instantPools; + + /** + * Init the different pools, based on Config. It is launched only once, on Gameserver instance. + */ + public static void init() { - private final Runnable _r; - - public RunnableWrapper(Runnable r) + // Feed scheduled pool. + int poolCount = Config.SCHEDULED_THREAD_POOL_COUNT; + if (poolCount == -1) { - _r = r; + poolCount = Runtime.getRuntime().availableProcessors(); } - @Override - public final void run() + _scheduledPools = new ScheduledThreadPoolExecutor[poolCount]; + for (int i = 0; i < poolCount; i++) { - try - { - _r.run(); - } - catch (Throwable e) - { - final Thread t = Thread.currentThread(); - final UncaughtExceptionHandler h = t.getUncaughtExceptionHandler(); - if (h != null) - { - h.uncaughtException(t, e); - } - } + _scheduledPools[i] = new ScheduledThreadPoolExecutor(Config.THREADS_PER_SCHEDULED_THREAD_POOL); } - } - - protected ScheduledThreadPoolExecutor _effectsScheduledThreadPool; - protected ScheduledThreadPoolExecutor _generalScheduledThreadPool; - protected ScheduledThreadPoolExecutor _aiScheduledThreadPool; - protected ScheduledThreadPoolExecutor _eventScheduledThreadPool; - private final ThreadPoolExecutor _generalPacketsThreadPool; - private final ThreadPoolExecutor _ioPacketsThreadPool; - private final ThreadPoolExecutor _generalThreadPool; - private final ThreadPoolExecutor _eventThreadPool; - - private boolean _shutdown; - - public static ThreadPoolManager getInstance() - { - return SingletonHolder._instance; - } - - protected ThreadPoolManager() - { - _effectsScheduledThreadPool = new ScheduledThreadPoolExecutor(Config.THREAD_P_EFFECTS, new PriorityThreadFactory("EffectsSTPool", Thread.NORM_PRIORITY)); - _generalScheduledThreadPool = new ScheduledThreadPoolExecutor(Config.THREAD_P_GENERAL, new PriorityThreadFactory("GeneralSTPool", Thread.NORM_PRIORITY)); - _eventScheduledThreadPool = new ScheduledThreadPoolExecutor(Config.THREAD_E_EVENTS, new PriorityThreadFactory("EventSTPool", Thread.NORM_PRIORITY)); - _ioPacketsThreadPool = new ThreadPoolExecutor(Config.IO_PACKET_THREAD_CORE_SIZE, Integer.MAX_VALUE, 5L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(), new PriorityThreadFactory("I/O Packet Pool", Thread.NORM_PRIORITY + 1)); - _generalPacketsThreadPool = new ThreadPoolExecutor(Config.GENERAL_PACKET_THREAD_CORE_SIZE, Config.GENERAL_PACKET_THREAD_CORE_SIZE + 2, 15L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(), new PriorityThreadFactory("Normal Packet Pool", Thread.NORM_PRIORITY + 1)); - _generalThreadPool = new ThreadPoolExecutor(Config.GENERAL_THREAD_CORE_SIZE, Config.GENERAL_THREAD_CORE_SIZE + 2, 5L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(), new PriorityThreadFactory("General Pool", Thread.NORM_PRIORITY)); - _aiScheduledThreadPool = new ScheduledThreadPoolExecutor(Config.AI_MAX_THREAD, new PriorityThreadFactory("AISTPool", Thread.NORM_PRIORITY)); - _eventThreadPool = new ThreadPoolExecutor(Config.EVENT_MAX_THREAD, Config.EVENT_MAX_THREAD + 2, 5L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(), new PriorityThreadFactory("Event Pool", Thread.NORM_PRIORITY)); - scheduleGeneralAtFixedRate(new PurgeTask(), 10, 5, TimeUnit.MINUTES); + // Feed instant pool. + poolCount = Config.INSTANT_THREAD_POOL_COUNT; + if (poolCount == -1) + { + poolCount = Runtime.getRuntime().availableProcessors(); + } + + _instantPools = new ThreadPoolExecutor[poolCount]; + for (int i = 0; i < poolCount; i++) + { + _instantPools[i] = new ThreadPoolExecutor(Config.THREADS_PER_INSTANT_THREAD_POOL, Config.THREADS_PER_INSTANT_THREAD_POOL, 0, TimeUnit.SECONDS, new ArrayBlockingQueue(100000)); + } + + // Prestart core threads. + for (ScheduledThreadPoolExecutor threadPool : _scheduledPools) + { + threadPool.prestartAllCoreThreads(); + } + + for (ThreadPoolExecutor threadPool : _instantPools) + { + threadPool.prestartAllCoreThreads(); + } + + // Launch purge task. + scheduleAtFixedRate(() -> + { + purge(); + }, 600000, 600000); + + LOG.info("ThreadPoolManager: Initialized " + getPoolSize(_instantPools) + "/" + getMaximumPoolSize(_instantPools) + " instant thread(s)."); + LOG.info("ThreadPoolManager: Initialized " + getPoolSize(_scheduledPools) + "/" + getMaximumPoolSize(_scheduledPools) + " scheduled thread(s)."); + } + + public static void purge() + { + for (ScheduledThreadPoolExecutor threadPool1 : _scheduledPools) + { + threadPool1.purge(); + } + for (ThreadPoolExecutor threadPool2 : _instantPools) + { + threadPool2.purge(); + } } /** - * Schedules an effect task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in the given time unit - * @param unit the time unit of the delay parameter - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation + * Schedules a one-shot action that becomes enabled after a delay. The pool is chosen based on pools activity. + * @param r : the task to execute. + * @param delay : the time from now to delay execution. + * @return a ScheduledFuture representing pending completion of the task and whose get() method will return null upon completion. */ - public ScheduledFuture scheduleEffect(Runnable task, long delay, TimeUnit unit) + public static ScheduledFuture schedule(Runnable r, long delay) { try { - return _effectsScheduledThreadPool.schedule(new RunnableWrapper(task), delay, unit); + return getPool(_scheduledPools).schedule(new TaskWrapper(r), validate(delay), TimeUnit.MILLISECONDS); } - catch (RejectedExecutionException e) + catch (Exception e) { return null; } } /** - * Schedules an effect task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation + * Schedules a periodic action that becomes enabled after a delay. The pool is chosen based on pools activity. + * @param r : the task to execute. + * @param delay : the time from now to delay execution. + * @param period : the period between successive executions. + * @return a ScheduledFuture representing pending completion of the task and whose get() method will throw an exception upon cancellation. */ - public ScheduledFuture scheduleEffect(Runnable task, long delay) - { - return scheduleEffect(task, delay, TimeUnit.MILLISECONDS); - } - - /** - * Schedules an effect task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in the given time unit - * @param period the period between executions in the given time unit - * @param unit the time unit of the initialDelay and period parameters - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleEffectAtFixedRate(Runnable task, long initialDelay, long period, TimeUnit unit) + public static ScheduledFuture scheduleAtFixedRate(Runnable r, long delay, long period) { try { - return _effectsScheduledThreadPool.scheduleAtFixedRate(new RunnableWrapper(task), initialDelay, period, unit); + return getPool(_scheduledPools).scheduleAtFixedRate(new TaskWrapper(r), validate(delay), validate(period), TimeUnit.MILLISECONDS); } - catch (RejectedExecutionException e) + catch (Exception e) { - return null; /* shutdown, ignore */ + return null; } } /** - * Schedules an effect task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in milliseconds - * @param period the period between executions in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation + * Executes the given task sometime in the future. + * @param r : the task to execute. */ - public ScheduledFuture scheduleEffectAtFixedRate(Runnable task, long initialDelay, long period) - { - return scheduleEffectAtFixedRate(task, initialDelay, period, TimeUnit.MILLISECONDS); - } - - /** - * Schedules a general task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in the given time unit - * @param unit the time unit of the delay parameter - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleGeneral(Runnable task, long delay, TimeUnit unit) + public static void execute(Runnable r) { try { - return _generalScheduledThreadPool.schedule(new RunnableWrapper(task), delay, unit); + getPool(_instantPools).execute(new TaskWrapper(r)); } - catch (RejectedExecutionException e) + catch (Exception e) { - return null; /* shutdown, ignore */ } } - /** - * Schedules a general task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleGeneral(Runnable task, long delay) + public static String[] getStats() { - return scheduleGeneral(task, delay, TimeUnit.MILLISECONDS); + List stats = new ArrayList<>(); + for (int i = 0; i < _scheduledPools.length; i++) + { + final ScheduledThreadPoolExecutor threadPool = _scheduledPools[i]; + stats.add("Scheduled pool #" + i + ":"); + stats.add(" |- ActiveCount: ...... " + threadPool.getActiveCount()); + stats.add(" |- CorePoolSize: ..... " + threadPool.getCorePoolSize()); + stats.add(" |- PoolSize: ......... " + threadPool.getPoolSize()); + stats.add(" |- LargestPoolSize: .. " + threadPool.getLargestPoolSize()); + stats.add(" |- MaximumPoolSize: .. " + threadPool.getMaximumPoolSize()); + stats.add(" |- CompletedTaskCount: " + threadPool.getCompletedTaskCount()); + stats.add(" |- QueuedTaskCount: .. " + threadPool.getQueue().size()); + stats.add(" |- TaskCount: ........ " + threadPool.getTaskCount()); + stats.add(" | -------"); + } + for (int i = 0; i < _instantPools.length; i++) + { + final ThreadPoolExecutor threadPool = _instantPools[i]; + stats.add("Scheduled pool #" + i + ":"); + stats.add(" |- ActiveCount: ...... " + threadPool.getActiveCount()); + stats.add(" |- CorePoolSize: ..... " + threadPool.getCorePoolSize()); + stats.add(" |- PoolSize: ......... " + threadPool.getPoolSize()); + stats.add(" |- LargestPoolSize: .. " + threadPool.getLargestPoolSize()); + stats.add(" |- MaximumPoolSize: .. " + threadPool.getMaximumPoolSize()); + stats.add(" |- CompletedTaskCount: " + threadPool.getCompletedTaskCount()); + stats.add(" |- QueuedTaskCount: .. " + threadPool.getQueue().size()); + stats.add(" |- TaskCount: ........ " + threadPool.getTaskCount()); + stats.add(" | -------"); + } + return stats.toArray(new String[stats.size()]); } /** - * Schedules a general task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in the given time unit - * @param period the period between executions in the given time unit - * @param unit the time unit of the initialDelay and period parameters - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation + * Shutdown thread pooling system correctly. Send different informations. */ - public ScheduledFuture scheduleGeneralAtFixedRate(Runnable task, long initialDelay, long period, TimeUnit unit) + public static void shutdown() { try { - return _generalScheduledThreadPool.scheduleAtFixedRate(new RunnableWrapper(task), initialDelay, period, unit); - } - catch (RejectedExecutionException e) - { - return null; /* shutdown, ignore */ - } - } - - /** - * Schedules a event task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in the given time unit - * @param unit the time unit of the delay parameter - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleEvent(Runnable task, long delay, TimeUnit unit) - { - try - { - return _eventScheduledThreadPool.schedule(new RunnableWrapper(task), delay, unit); - } - catch (RejectedExecutionException e) - { - return null; /* shutdown, ignore */ - } - } - - /** - * Schedules a event task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleEvent(Runnable task, long delay) - { - return scheduleEvent(task, delay, TimeUnit.MILLISECONDS); - } - - /** - * Schedules a event task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in the given time unit - * @param period the period between executions in the given time unit - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleEventAtFixedRate(Runnable task, long initialDelay, long period) - { - return scheduleEventAtFixedRate(task, initialDelay, period, TimeUnit.MILLISECONDS); - } - - /** - * Schedules a event task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in the given time unit - * @param period the period between executions in the given time unit - * @param unit the time unit of the initialDelay and period parameters - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleEventAtFixedRate(Runnable task, long initialDelay, long period, TimeUnit unit) - { - try - { - return _eventScheduledThreadPool.scheduleAtFixedRate(new RunnableWrapper(task), initialDelay, period, unit); - } - catch (RejectedExecutionException e) - { - return null; /* shutdown, ignore */ - } - } - - /** - * Schedules a general task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in milliseconds - * @param period the period between executions in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleGeneralAtFixedRate(Runnable task, long initialDelay, long period) - { - return scheduleGeneralAtFixedRate(task, initialDelay, period, TimeUnit.MILLISECONDS); - } - - /** - * Schedules an AI task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in the given time unit - * @param unit the time unit of the delay parameter - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleAi(Runnable task, long delay, TimeUnit unit) - { - try - { - return _aiScheduledThreadPool.schedule(new RunnableWrapper(task), delay, unit); - } - catch (RejectedExecutionException e) - { - return null; /* shutdown, ignore */ - } - } - - /** - * Schedules an AI task to be executed after the given delay. - * @param task the task to execute - * @param delay the delay in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleAi(Runnable task, long delay) - { - return scheduleAi(task, delay, TimeUnit.MILLISECONDS); - } - - /** - * Schedules a general task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in the given time unit - * @param period the period between executions in the given time unit - * @param unit the time unit of the initialDelay and period parameters - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleAiAtFixedRate(Runnable task, long initialDelay, long period, TimeUnit unit) - { - try - { - return _aiScheduledThreadPool.scheduleAtFixedRate(new RunnableWrapper(task), initialDelay, period, unit); - } - catch (RejectedExecutionException e) - { - return null; /* shutdown, ignore */ - } - } - - /** - * Schedules a general task to be executed at fixed rate. - * @param task the task to execute - * @param initialDelay the initial delay in milliseconds - * @param period the period between executions in milliseconds - * @return a ScheduledFuture representing pending completion of the task, and whose get() method will throw an exception upon cancellation - */ - public ScheduledFuture scheduleAiAtFixedRate(Runnable task, long initialDelay, long period) - { - return scheduleAiAtFixedRate(task, initialDelay, period, TimeUnit.MILLISECONDS); - } - - /** - * Executes a packet task sometime in future in another thread. - * @param task the task to execute - */ - public void executePacket(Runnable task) - { - try - { - _generalPacketsThreadPool.execute(task); - } - catch (RejectedExecutionException e) - { - /* shutdown, ignore */ - } - } - - /** - * Executes an IO packet task sometime in future in another thread. - * @param task the task to execute - */ - public void executeIOPacket(Runnable task) - { - try - { - _ioPacketsThreadPool.execute(task); - } - catch (RejectedExecutionException e) - { - /* shutdown, ignore */ - } - } - - /** - * Executes a general task sometime in future in another thread. - * @param task the task to execute - */ - public void executeGeneral(Runnable task) - { - try - { - _generalThreadPool.execute(new RunnableWrapper(task)); - } - catch (RejectedExecutionException e) - { - /* shutdown, ignore */ - } - } - - /** - * Executes an AI task sometime in future in another thread. - * @param task the task to execute - */ - public void executeAi(Runnable task) - { - try - { - _aiScheduledThreadPool.execute(new RunnableWrapper(task)); - } - catch (RejectedExecutionException e) - { - /* shutdown, ignore */ - } - } - - /** - * Executes an Event task sometime in future in another thread. - * @param task the task to execute - */ - public void executeEvent(Runnable task) - { - try - { - _eventThreadPool.execute(new RunnableWrapper(task)); - } - catch (RejectedExecutionException e) - { - /* shutdown, ignore */ - } - } - - public StatsSet getStats(String category) - { - final StatsSet StatsSet = new StatsSet(); - - switch (category) - { - case "EFFECTS": - { - StatsSet.set("ActiveThreads", _effectsScheduledThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _effectsScheduledThreadPool.getCorePoolSize()); - StatsSet.set("PoolSize", _effectsScheduledThreadPool.getPoolSize()); - StatsSet.set("MaximumPoolSize", _effectsScheduledThreadPool.getMaximumPoolSize()); - StatsSet.set("CompletedTasks", (int) _effectsScheduledThreadPool.getCompletedTaskCount()); - StatsSet.set("ScheduledTasks", _effectsScheduledThreadPool.getQueue().size()); - break; - } - case "GENERAL": - { - StatsSet.set("ActiveThreads", _generalScheduledThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSizes", _generalScheduledThreadPool.getCorePoolSize()); - StatsSet.set("PoolSizes", _generalScheduledThreadPool.getPoolSize()); - StatsSet.set("MaximumPoolSizes", _generalScheduledThreadPool.getMaximumPoolSize()); - StatsSet.set("CompletedTasks", (int) _generalScheduledThreadPool.getCompletedTaskCount()); - StatsSet.set("ScheduledTasks", _generalScheduledThreadPool.getQueue().size()); - break; - } - case "AI": - { - StatsSet.set("ActiveThreads", _aiScheduledThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _aiScheduledThreadPool.getCorePoolSize()); - StatsSet.set("PoolSize", _aiScheduledThreadPool.getPoolSize()); - StatsSet.set("MaximumPoolSize", _aiScheduledThreadPool.getMaximumPoolSize()); - StatsSet.set("CompletedTasks", (int) _aiScheduledThreadPool.getCompletedTaskCount()); - StatsSet.set("ScheduledTasks", _aiScheduledThreadPool.getQueue().size()); - break; - } - case "EVENT": - { - StatsSet.set("ActiveThreads", _eventScheduledThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _eventScheduledThreadPool.getCorePoolSize()); - StatsSet.set("PoolSize", _eventScheduledThreadPool.getPoolSize()); - StatsSet.set("MaximumPoolSize", _eventScheduledThreadPool.getMaximumPoolSize()); - StatsSet.set("CompletedTasks", (int) _eventScheduledThreadPool.getCompletedTaskCount()); - StatsSet.set("ScheduledTasks", _eventScheduledThreadPool.getQueue().size()); - break; - } - case "PACKETS": - { - StatsSet.set("ActiveThreads", _generalPacketsThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _generalPacketsThreadPool.getCorePoolSize()); - StatsSet.set("MaximumPoolSize", _generalPacketsThreadPool.getMaximumPoolSize()); - StatsSet.set("LargestPoolSize", _generalPacketsThreadPool.getLargestPoolSize()); - StatsSet.set("PoolSize", _generalPacketsThreadPool.getPoolSize()); - StatsSet.set("CompletedTasks", (int) _generalPacketsThreadPool.getCompletedTaskCount()); - StatsSet.set("QueuedTasks", _generalPacketsThreadPool.getQueue().size()); - break; - } - case "IOPACKETS": - { - StatsSet.set("ActiveThreads", _ioPacketsThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _ioPacketsThreadPool.getCorePoolSize()); - StatsSet.set("MaximumPoolSize", _ioPacketsThreadPool.getMaximumPoolSize()); - StatsSet.set("LargestPoolSize", _ioPacketsThreadPool.getLargestPoolSize()); - StatsSet.set("PoolSize", _ioPacketsThreadPool.getPoolSize()); - StatsSet.set("CompletedTasks", (int) _ioPacketsThreadPool.getCompletedTaskCount()); - StatsSet.set("QueuedTasks", _ioPacketsThreadPool.getQueue().size()); - break; - } - case "GENERAL_TASKS": - { - StatsSet.set("ActiveThreads", _generalThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _generalThreadPool.getCorePoolSize()); - StatsSet.set("MaximumPoolSize", _generalThreadPool.getMaximumPoolSize()); - StatsSet.set("LargestPoolSize", _generalThreadPool.getLargestPoolSize()); - StatsSet.set("PoolSize", _generalThreadPool.getPoolSize()); - StatsSet.set("CompletedTasks", (int) _generalThreadPool.getCompletedTaskCount()); - StatsSet.set("QueuedTasks", _generalThreadPool.getQueue().size()); - break; - } - case "EVENT_TASKS": - { - StatsSet.set("ActiveThreads", _eventThreadPool.getActiveCount()); - StatsSet.set("getCorePoolSize", _eventThreadPool.getCorePoolSize()); - StatsSet.set("MaximumPoolSize", _eventThreadPool.getMaximumPoolSize()); - StatsSet.set("LargestPoolSize", _eventThreadPool.getLargestPoolSize()); - StatsSet.set("PoolSize", _eventThreadPool.getPoolSize()); - StatsSet.set("CompletedTasks", (int) _eventThreadPool.getCompletedTaskCount()); - StatsSet.set("QueuedTasks", _eventThreadPool.getQueue().size()); - break; - } - } - return StatsSet; - } - - public String[] getStats() - { - return new String[] - { - "STP:", - " + Effects:", - " |- ActiveThreads: " + _effectsScheduledThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _effectsScheduledThreadPool.getCorePoolSize(), - " |- PoolSize: " + _effectsScheduledThreadPool.getPoolSize(), - " |- MaximumPoolSize: " + _effectsScheduledThreadPool.getMaximumPoolSize(), - " |- CompletedTasks: " + _effectsScheduledThreadPool.getCompletedTaskCount(), - " |- ScheduledTasks: " + _effectsScheduledThreadPool.getQueue().size(), - " | -------", - " + General:", - " |- ActiveThreads: " + _generalScheduledThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _generalScheduledThreadPool.getCorePoolSize(), - " |- PoolSize: " + _generalScheduledThreadPool.getPoolSize(), - " |- MaximumPoolSize: " + _generalScheduledThreadPool.getMaximumPoolSize(), - " |- CompletedTasks: " + _generalScheduledThreadPool.getCompletedTaskCount(), - " |- ScheduledTasks: " + _generalScheduledThreadPool.getQueue().size(), - " | -------", - " + AI:", - " |- ActiveThreads: " + _aiScheduledThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _aiScheduledThreadPool.getCorePoolSize(), - " |- PoolSize: " + _aiScheduledThreadPool.getPoolSize(), - " |- MaximumPoolSize: " + _aiScheduledThreadPool.getMaximumPoolSize(), - " |- CompletedTasks: " + _aiScheduledThreadPool.getCompletedTaskCount(), - " |- ScheduledTasks: " + _aiScheduledThreadPool.getQueue().size(), - " | -------", - " + Event:", - " |- ActiveThreads: " + _eventScheduledThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _eventScheduledThreadPool.getCorePoolSize(), - " |- PoolSize: " + _eventScheduledThreadPool.getPoolSize(), - " |- MaximumPoolSize: " + _eventScheduledThreadPool.getMaximumPoolSize(), - " |- CompletedTasks: " + _eventScheduledThreadPool.getCompletedTaskCount(), - " |- ScheduledTasks: " + _eventScheduledThreadPool.getQueue().size(), - "TP:", - " + Packets:", - " |- ActiveThreads: " + _generalPacketsThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _generalPacketsThreadPool.getCorePoolSize(), - " |- MaximumPoolSize: " + _generalPacketsThreadPool.getMaximumPoolSize(), - " |- LargestPoolSize: " + _generalPacketsThreadPool.getLargestPoolSize(), - " |- PoolSize: " + _generalPacketsThreadPool.getPoolSize(), - " |- CompletedTasks: " + _generalPacketsThreadPool.getCompletedTaskCount(), - " |- QueuedTasks: " + _generalPacketsThreadPool.getQueue().size(), - " | -------", - " + I/O Packets:", - " |- ActiveThreads: " + _ioPacketsThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _ioPacketsThreadPool.getCorePoolSize(), - " |- MaximumPoolSize: " + _ioPacketsThreadPool.getMaximumPoolSize(), - " |- LargestPoolSize: " + _ioPacketsThreadPool.getLargestPoolSize(), - " |- PoolSize: " + _ioPacketsThreadPool.getPoolSize(), - " |- CompletedTasks: " + _ioPacketsThreadPool.getCompletedTaskCount(), - " |- QueuedTasks: " + _ioPacketsThreadPool.getQueue().size(), - " | -------", - " + General Tasks:", - " |- ActiveThreads: " + _generalThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _generalThreadPool.getCorePoolSize(), - " |- MaximumPoolSize: " + _generalThreadPool.getMaximumPoolSize(), - " |- LargestPoolSize: " + _generalThreadPool.getLargestPoolSize(), - " |- PoolSize: " + _generalThreadPool.getPoolSize(), - " |- CompletedTasks: " + _generalThreadPool.getCompletedTaskCount(), - " |- QueuedTasks: " + _generalThreadPool.getQueue().size(), - " | -------", - " + Event Tasks:", - " |- ActiveThreads: " + _eventThreadPool.getActiveCount(), - " |- getCorePoolSize: " + _eventThreadPool.getCorePoolSize(), - " |- MaximumPoolSize: " + _eventThreadPool.getMaximumPoolSize(), - " |- LargestPoolSize: " + _eventThreadPool.getLargestPoolSize(), - " |- PoolSize: " + _eventThreadPool.getPoolSize(), - " |- CompletedTasks: " + _eventThreadPool.getCompletedTaskCount(), - " |- QueuedTasks: " + _eventThreadPool.getQueue().size(), - " | -------" - }; - } - - private static class PriorityThreadFactory implements ThreadFactory - { - private final int _prio; - private final String _name; - private final AtomicInteger _threadNumber = new AtomicInteger(1); - private final ThreadGroup _group; - - public PriorityThreadFactory(String name, int prio) - { - _prio = prio; - _name = name; - _group = new ThreadGroup(_name); - } - - @Override - public Thread newThread(Runnable r) - { - final Thread t = new Thread(_group, r, _name + "-" + _threadNumber.getAndIncrement()); - t.setPriority(_prio); - return t; - } - - public ThreadGroup getGroup() - { - return _group; - } - } - - public void shutdown() - { - _shutdown = true; - try - { - _effectsScheduledThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _generalScheduledThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _generalPacketsThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _ioPacketsThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _generalThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _eventThreadPool.awaitTermination(1, TimeUnit.SECONDS); - _effectsScheduledThreadPool.shutdown(); - _generalScheduledThreadPool.shutdown(); - _generalPacketsThreadPool.shutdown(); - _ioPacketsThreadPool.shutdown(); - _generalThreadPool.shutdown(); - _eventThreadPool.shutdown(); - LOGGER.info("All ThreadPools are now stopped"); + System.out.println("ThreadPoolManager: Shutting down."); - } - catch (InterruptedException e) - { - LOGGER.log(Level.WARNING, "", e); - } - } - - public boolean isShutdown() - { - return _shutdown; - } - - public void purge() - { - _effectsScheduledThreadPool.purge(); - _generalScheduledThreadPool.purge(); - _aiScheduledThreadPool.purge(); - _eventScheduledThreadPool.purge(); - _ioPacketsThreadPool.purge(); - _generalPacketsThreadPool.purge(); - _generalThreadPool.purge(); - _eventThreadPool.purge(); - } - - public String getPacketStats() - { - final StringBuilder sb = new StringBuilder(1000); - final ThreadFactory tf = _generalPacketsThreadPool.getThreadFactory(); - if (tf instanceof PriorityThreadFactory) - { - final PriorityThreadFactory ptf = (PriorityThreadFactory) tf; - final int count = ptf.getGroup().activeCount(); - final Thread[] threads = new Thread[count + 2]; - ptf.getGroup().enumerate(threads); - sb.append("General Packet Thread Pool:" + Config.EOL + "Tasks in the queue: " + _generalPacketsThreadPool.getQueue().size() + Config.EOL + "Showing threads stack trace:" + Config.EOL + "There should be " + count + " Threads" + Config.EOL); - for (Thread t : threads) + for (ScheduledThreadPoolExecutor threadPool : _scheduledPools) { - if (t == null) - { - continue; - } - - sb.append(t.getName()); - sb.append(Config.EOL); - for (StackTraceElement ste : t.getStackTrace()) - { - sb.append(ste); - sb.append(Config.EOL); - } + threadPool.shutdownNow(); } - } - - sb.append("Packet Tp stack traces printed."); - sb.append(Config.EOL); - return sb.toString(); - } - - public String getIOPacketStats() - { - final StringBuilder sb = new StringBuilder(1000); - final ThreadFactory tf = _ioPacketsThreadPool.getThreadFactory(); - - if (tf instanceof PriorityThreadFactory) - { - final PriorityThreadFactory ptf = (PriorityThreadFactory) tf; - final int count = ptf.getGroup().activeCount(); - final Thread[] threads = new Thread[count + 2]; - ptf.getGroup().enumerate(threads); - sb.append("I/O Packet Thread Pool:" + Config.EOL + "Tasks in the queue: " + _ioPacketsThreadPool.getQueue().size() + Config.EOL + "Showing threads stack trace:" + Config.EOL + "There should be " + count + " Threads" + Config.EOL); - for (Thread t : threads) + for (ThreadPoolExecutor threadPool : _instantPools) { - if (t == null) - { - continue; - } - - sb.append(t.getName()); - sb.append(Config.EOL); - for (StackTraceElement ste : t.getStackTrace()) - { - sb.append(ste); - sb.append(Config.EOL); - } + threadPool.shutdownNow(); } } - - sb.append("Packet Tp stack traces printed." + Config.EOL); - - return sb.toString(); - } - - public String getGeneralStats() - { - final StringBuilder sb = new StringBuilder(1000); - final ThreadFactory tf = _generalThreadPool.getThreadFactory(); - - if (tf instanceof PriorityThreadFactory) + catch (Throwable t) { - final PriorityThreadFactory ptf = (PriorityThreadFactory) tf; - final int count = ptf.getGroup().activeCount(); - final Thread[] threads = new Thread[count + 2]; - ptf.getGroup().enumerate(threads); - sb.append("General Thread Pool:" + Config.EOL + "Tasks in the queue: " + _generalThreadPool.getQueue().size() + Config.EOL + "Showing threads stack trace:" + Config.EOL + "There should be " + +count + " Threads" + Config.EOL); - - for (Thread t : threads) - { - if (t == null) - { - continue; - } - - sb.append(t.getName()); - sb.append(Config.EOL); - for (StackTraceElement ste : t.getStackTrace()) - { - sb.append(ste); - sb.append(Config.EOL); - } - } + t.printStackTrace(); } - - sb.append("Packet Tp stack traces printed." + Config.EOL); - - return sb.toString(); } - protected class PurgeTask implements Runnable + /** + * @param : The pool type. + * @param threadPools : The pool array to check. + * @return the less fed pool. + */ + private static T getPool(T[] threadPools) { + return threadPools[_threadPoolRandomizer++ % threadPools.length]; + } + + /** + * @param delay : The delay to validate. + * @return a secured value, from 0 to MAX_DELAY. + */ + private static long validate(long delay) + { + return Math.max(0, Math.min(MAX_DELAY, delay)); + } + + /** + * @param threadPools : The pool array to check. + * @return the overall actual pools size. + */ + private static long getPoolSize(ThreadPoolExecutor[] threadPools) + { + long result = 0; + + for (ThreadPoolExecutor threadPool : threadPools) + { + result += threadPool.getPoolSize(); + } + + return result; + } + + /** + * @param threadPools : The pool array to check. + * @return the overall maximum pools size. + */ + private static long getMaximumPoolSize(ThreadPoolExecutor[] threadPools) + { + long result = 0; + + for (ThreadPoolExecutor threadPool : threadPools) + { + result += threadPool.getMaximumPoolSize(); + } + + return result; + } + + public static final class TaskWrapper implements Runnable + { + private final Runnable _runnable; + + public TaskWrapper(Runnable runnable) + { + _runnable = runnable; + } + @Override public void run() { - _effectsScheduledThreadPool.purge(); - _generalScheduledThreadPool.purge(); - _aiScheduledThreadPool.purge(); - _eventScheduledThreadPool.purge(); + try + { + _runnable.run(); + } + catch (RuntimeException e) + { + LOG.warning("Exception in a Runnable execution:" + e); + } } } - - private static class SingletonHolder - { - protected static final ThreadPoolManager _instance = new ThreadPoolManager(); - } } \ No newline at end of file diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/AbstractAI.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/AbstractAI.java index 6264f0fd61..b0de12e3a7 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/AbstractAI.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/AbstractAI.java @@ -728,7 +728,7 @@ public abstract class AbstractAI implements Ctrl setTarget(target); final int followRange = range == -1 ? Rnd.get(50, 100) : range; - _followTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(() -> + _followTask = ThreadPoolManager.scheduleAtFixedRate(() -> { try { diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/L2AttackableAI.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/L2AttackableAI.java index b2726b7a08..c363c397b5 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/L2AttackableAI.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/L2AttackableAI.java @@ -203,7 +203,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable // If not idle - create an AI task (schedule onEvtThink repeatedly) if (_aiTask == null) { - _aiTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this, 1000, 1000); + _aiTask = ThreadPoolManager.scheduleAtFixedRate(this, 1000, 1000); } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/L2CharacterAI.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/L2CharacterAI.java index f307a1741d..c5cab58d48 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/L2CharacterAI.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/L2CharacterAI.java @@ -308,7 +308,7 @@ public class L2CharacterAI extends AbstractAI if (_actor.isAttackingNow()) { - ThreadPoolManager.getInstance().scheduleGeneral(new CastTask(_actor, skill, target, item, forceUse, dontMove), _actor.getAttackEndTime() - TimeUnit.MILLISECONDS.toNanos(System.currentTimeMillis())); + ThreadPoolManager.schedule(new CastTask(_actor, skill, target, item, forceUse, dontMove), _actor.getAttackEndTime() - TimeUnit.MILLISECONDS.toNanos(System.currentTimeMillis())); } else { diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/L2DoorAI.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/L2DoorAI.java index 5df2a74538..1c536565b1 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/L2DoorAI.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/L2DoorAI.java @@ -89,7 +89,7 @@ public class L2DoorAI extends L2CharacterAI @Override protected void onEvtAttacked(L2Character attacker) { - ThreadPoolManager.getInstance().executeGeneral(new onEventAttackedDoorTask((L2DoorInstance) _actor, attacker)); + ThreadPoolManager.execute(new onEventAttackedDoorTask((L2DoorInstance) _actor, attacker)); } @Override diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/L2FortSiegeGuardAI.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/L2FortSiegeGuardAI.java index 9776e16aa8..79f39cb51d 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/L2FortSiegeGuardAI.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/L2FortSiegeGuardAI.java @@ -217,7 +217,7 @@ public class L2FortSiegeGuardAI extends L2CharacterAI implements Runnable // If not idle - create an AI task (schedule onEvtThink repeatedly) if (_aiTask == null) { - _aiTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this, 1000, 1000); + _aiTask = ThreadPoolManager.scheduleAtFixedRate(this, 1000, 1000); } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/L2SiegeGuardAI.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/L2SiegeGuardAI.java index f6d5a3b6f1..caf5f39544 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/L2SiegeGuardAI.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/L2SiegeGuardAI.java @@ -204,7 +204,7 @@ public class L2SiegeGuardAI extends L2CharacterAI implements Runnable // If not idle - create an AI task (schedule onEvtThink repeatedly) if (_aiTask == null) { - _aiTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this, 1000, 1000); + _aiTask = ThreadPoolManager.scheduleAtFixedRate(this, 1000, 1000); } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/L2SummonAI.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/L2SummonAI.java index 26c09985b0..00c00b8ff9 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/L2SummonAI.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/ai/L2SummonAI.java @@ -342,7 +342,7 @@ public class L2SummonAI extends L2PlayableAI implements Runnable { if (_avoidTask == null) { - _avoidTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this, 100, 100); + _avoidTask = ThreadPoolManager.scheduleAtFixedRate(this, 100, 100); } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/cache/WarehouseCacheManager.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/cache/WarehouseCacheManager.java index ae00f2fe33..258e120fa2 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/cache/WarehouseCacheManager.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/cache/WarehouseCacheManager.java @@ -33,7 +33,7 @@ public class WarehouseCacheManager protected WarehouseCacheManager() { - ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new CacheScheduler(), 120000, 60000); + ThreadPoolManager.scheduleAtFixedRate(new CacheScheduler(), 120000, 60000); } public void addCacheTask(L2PcInstance pc) diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/data/sql/impl/ClanTable.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/data/sql/impl/ClanTable.java index 4d4718f475..93625c6b3c 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/data/sql/impl/ClanTable.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/data/sql/impl/ClanTable.java @@ -331,7 +331,7 @@ public class ClanTable public void scheduleRemoveClan(int clanId) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { if (getClan(clanId) == null) { diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/datatables/BotReportTable.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/datatables/BotReportTable.java index aa6c03a3ac..a145b65dba 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/datatables/BotReportTable.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/datatables/BotReportTable.java @@ -421,11 +421,11 @@ public final class BotReportTable c.set(Calendar.DAY_OF_YEAR, c.get(Calendar.DAY_OF_YEAR) + 1); } - ThreadPoolManager.getInstance().scheduleGeneral(new ResetPointTask(), c.getTimeInMillis() - System.currentTimeMillis()); + ThreadPoolManager.schedule(new ResetPointTask(), c.getTimeInMillis() - System.currentTimeMillis()); } catch (Exception e) { - ThreadPoolManager.getInstance().scheduleGeneral(new ResetPointTask(), 24 * 3600 * 1000); + ThreadPoolManager.schedule(new ResetPointTask(), 24 * 3600 * 1000); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Could not properly schedule bot report points reset task. Scheduled in 24 hours.", e); } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/datatables/ItemTable.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/datatables/ItemTable.java index f506bb6e4f..29c7c41a51 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/datatables/ItemTable.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/datatables/ItemTable.java @@ -221,14 +221,14 @@ public class ItemTable if ((raid.getFirstCommandChannelAttacked() != null) && !Config.AUTO_LOOT_RAIDS) { item.setOwnerId(raid.getFirstCommandChannelAttacked().getLeaderObjectId()); - itemLootShedule = ThreadPoolManager.getInstance().scheduleGeneral(new ResetOwner(item), Config.LOOT_RAIDS_PRIVILEGE_INTERVAL); + itemLootShedule = ThreadPoolManager.schedule(new ResetOwner(item), Config.LOOT_RAIDS_PRIVILEGE_INTERVAL); item.setItemLootShedule(itemLootShedule); } } else if (!Config.AUTO_LOOT || ((reference instanceof L2EventMonsterInstance) && ((L2EventMonsterInstance) reference).eventDropOnGround())) { item.setOwnerId(actor.getObjectId()); - itemLootShedule = ThreadPoolManager.getInstance().scheduleGeneral(new ResetOwner(item), 15000); + itemLootShedule = ThreadPoolManager.schedule(new ResetOwner(item), 15000); item.setItemLootShedule(itemLootShedule); } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/idfactory/BitSetIDFactory.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/idfactory/BitSetIDFactory.java index a89517e6d8..b81189c6db 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/idfactory/BitSetIDFactory.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/idfactory/BitSetIDFactory.java @@ -53,7 +53,7 @@ public class BitSetIDFactory extends IdFactory synchronized (BitSetIDFactory.class) { - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new BitSetCapacityCheck(), 30000, 30000); + ThreadPoolManager.scheduleAtFixedRate(new BitSetCapacityCheck(), 30000, 30000); initialize(); } LOGGER.info(getClass().getSimpleName() + ": " + _freeIds.size() + " id's available."); diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/CastleManorManager.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/CastleManorManager.java index 4bf663ecee..2e64596385 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/CastleManorManager.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/CastleManorManager.java @@ -29,7 +29,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; import java.util.stream.Collectors; @@ -107,7 +106,7 @@ public final class CastleManorManager implements IGameXmlReader, IStorable // Schedule autosave if (!Config.ALT_MANOR_SAVE_ALL_ACTIONS) { - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this::storeMe, Config.ALT_MANOR_SAVE_PERIOD_RATE, Config.ALT_MANOR_SAVE_PERIOD_RATE, TimeUnit.HOURS); + ThreadPoolManager.scheduleAtFixedRate(this::storeMe, Config.ALT_MANOR_SAVE_PERIOD_RATE * 60 * 60 * 1000, Config.ALT_MANOR_SAVE_PERIOD_RATE * 60 * 60 * 1000); } // Send debug message @@ -278,7 +277,7 @@ public final class CastleManorManager implements IGameXmlReader, IStorable break; } // Schedule mode change - ThreadPoolManager.getInstance().scheduleGeneral(this::changeMode, (_nextModeChange.getTimeInMillis() - System.currentTimeMillis())); + ThreadPoolManager.schedule(this::changeMode, (_nextModeChange.getTimeInMillis() - System.currentTimeMillis())); } public final void changeMode() diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/ClanEntryManager.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/ClanEntryManager.java index 9241243a07..62d750ea6e 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/ClanEntryManager.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/ClanEntryManager.java @@ -390,7 +390,7 @@ public class ClanEntryManager private static void lockPlayer(int playerId) { - _playerLocked.put(playerId, ThreadPoolManager.getInstance().scheduleGeneral(() -> + _playerLocked.put(playerId, ThreadPoolManager.schedule(() -> { _playerLocked.remove(playerId); }, LOCK_TIME)); @@ -398,7 +398,7 @@ public class ClanEntryManager private static void lockClan(int clanId) { - _clanLocked.put(clanId, ThreadPoolManager.getInstance().scheduleGeneral(() -> + _clanLocked.put(clanId, ThreadPoolManager.schedule(() -> { _clanLocked.remove(clanId); }, LOCK_TIME)); diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/CommissionManager.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/CommissionManager.java index 03aed150d6..d15bee76d5 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/CommissionManager.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/CommissionManager.java @@ -114,7 +114,7 @@ public final class CommissionManager } else { - commissionItem.setSaleEndTask(ThreadPoolManager.getInstance().scheduleGeneral(() -> expireSale(commissionItem), Duration.between(Instant.now(), commissionItem.getEndTime()).toMillis())); + commissionItem.setSaleEndTask(ThreadPoolManager.schedule(() -> expireSale(commissionItem), Duration.between(Instant.now(), commissionItem.getEndTime()).toMillis())); } } } @@ -259,7 +259,7 @@ public final class CommissionManager if (rs.next()) { final CommissionItem commissionItem = new CommissionItem(rs.getLong(1), itemInstance, pricePerUnit, startTime, durationInDays); - final ScheduledFuture saleEndTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> expireSale(commissionItem), Duration.between(Instant.now(), commissionItem.getEndTime()).toMillis()); + final ScheduledFuture saleEndTask = ThreadPoolManager.schedule(() -> expireSale(commissionItem), Duration.between(Instant.now(), commissionItem.getEndTime()).toMillis()); commissionItem.setSaleEndTask(saleEndTask); _commissionItems.put(commissionItem.getCommissionId(), commissionItem); player.getLastCommissionInfos().put(itemInstance.getId(), new ExResponseCommissionInfo(itemInstance.getId(), pricePerUnit, itemCount, (byte) ((durationInDays - 1) / 2))); diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/DBSpawnManager.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/DBSpawnManager.java index ed96d6cd39..7c337c11d2 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/DBSpawnManager.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/DBSpawnManager.java @@ -226,7 +226,7 @@ public class DBSpawnManager { LOGGER.info(getClass().getSimpleName() + ": Updated " + npc.getName() + " respawn time to " + Util.formatDate(new Date(respawnTime), "dd.MM.yyyy HH:mm")); - _schedules.put(npc.getId(), ThreadPoolManager.getInstance().scheduleGeneral(new SpawnSchedule(npc.getId()), respawnDelay)); + _schedules.put(npc.getId(), ThreadPoolManager.schedule(new SpawnSchedule(npc.getId()), respawnDelay)); updateDb(); } } @@ -287,7 +287,7 @@ public class DBSpawnManager else { final long spawnTime = respawnTime - System.currentTimeMillis(); - _schedules.put(npcId, ThreadPoolManager.getInstance().scheduleGeneral(new SpawnSchedule(npcId), spawnTime)); + _schedules.put(npcId, ThreadPoolManager.schedule(new SpawnSchedule(npcId), spawnTime)); } _spawns.put(npcId, spawn); diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/GraciaSeedsManager.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/GraciaSeedsManager.java index a3e653654f..4f5183877e 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/GraciaSeedsManager.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/GraciaSeedsManager.java @@ -101,7 +101,7 @@ public final class GraciaSeedsManager } else { - ThreadPoolManager.getInstance().scheduleEffect(new UpdateSoDStateTask(), Config.SOD_STAGE_2_LENGTH - timePast); + ThreadPoolManager.schedule(new UpdateSoDStateTask(), Config.SOD_STAGE_2_LENGTH - timePast); } break; case 3: diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/GrandBossManager.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/GrandBossManager.java index 532b343a8a..e7c0bad9c5 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/GrandBossManager.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/GrandBossManager.java @@ -98,7 +98,7 @@ public final class GrandBossManager implements IStorable { _log.log(Level.WARNING, getClass().getSimpleName() + ": Error while initializing GrandBossManager: " + e.getMessage(), e); } - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new GrandBossManagerStoreTask(), 5 * 60 * 1000, 5 * 60 * 1000); + ThreadPoolManager.scheduleAtFixedRate(new GrandBossManagerStoreTask(), 5 * 60 * 1000, 5 * 60 * 1000); } public int getBossStatus(int bossId) diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java index 3a0a2105d7..a77eb2d2d7 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java @@ -86,7 +86,7 @@ public final class HandysBlockCheckerManager { holder.checkAndShuffle(); } - ThreadPoolManager.getInstance().executeGeneral(holder.getEvent().new StartEvent()); + ThreadPoolManager.execute(holder.getEvent().new StartEvent()); } else { @@ -364,7 +364,7 @@ public final class HandysBlockCheckerManager private void schedulePenaltyRemoval(int objId) { - ThreadPoolManager.getInstance().scheduleGeneral(new PenaltyRemoveTask(objId), 10000); + ThreadPoolManager.schedule(new PenaltyRemoveTask(objId), 10000); } /** diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/ItemsOnGroundManager.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/ItemsOnGroundManager.java index 78e9cdb6a7..6871fb1dfe 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/ItemsOnGroundManager.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/ItemsOnGroundManager.java @@ -47,7 +47,7 @@ public final class ItemsOnGroundManager implements Runnable { if (Config.SAVE_DROPPED_ITEM_INTERVAL > 0) { - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this, Config.SAVE_DROPPED_ITEM_INTERVAL, Config.SAVE_DROPPED_ITEM_INTERVAL); + ThreadPoolManager.scheduleAtFixedRate(this, Config.SAVE_DROPPED_ITEM_INTERVAL, Config.SAVE_DROPPED_ITEM_INTERVAL); } load(); } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/MailManager.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/MailManager.java index b5e05d16eb..9a562ecf61 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/MailManager.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/MailManager.java @@ -74,11 +74,11 @@ public final class MailManager if (expiration < System.currentTimeMillis()) { - ThreadPoolManager.getInstance().scheduleGeneral(new MessageDeletionTask(msgId), 10000); + ThreadPoolManager.schedule(new MessageDeletionTask(msgId), 10000); } else { - ThreadPoolManager.getInstance().scheduleGeneral(new MessageDeletionTask(msgId), expiration - System.currentTimeMillis()); + ThreadPoolManager.schedule(new MessageDeletionTask(msgId), expiration - System.currentTimeMillis()); } } } @@ -209,7 +209,7 @@ public final class MailManager receiver.sendPacket(new ExUnReadMailCount(receiver)); } - ThreadPoolManager.getInstance().scheduleGeneral(new MessageDeletionTask(msg.getId()), msg.getExpiration() - System.currentTimeMillis()); + ThreadPoolManager.schedule(new MessageDeletionTask(msg.getId()), msg.getExpiration() - System.currentTimeMillis()); } public final void markAsReadInDb(int msgId) diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/PremiumManager.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/PremiumManager.java index 9075f34c27..3e52cd93bb 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/PremiumManager.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/PremiumManager.java @@ -111,7 +111,7 @@ public class PremiumManager */ private void startExpireTask(L2PcInstance player, long delay) { - ScheduledFuture task = ThreadPoolManager.getInstance().scheduleEvent(new PremiumExpireTask(player), delay); + ScheduledFuture task = ThreadPoolManager.schedule(new PremiumExpireTask(player), delay); expiretasks.put(player.getAccountName(), task); } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/ServerRestartManager.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/ServerRestartManager.java index 1d56bd7f20..478e1f78f5 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/ServerRestartManager.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/ServerRestartManager.java @@ -71,7 +71,7 @@ public class ServerRestartManager if (lastRestart != null) { nextRestartTime = new SimpleDateFormat("HH:mm").format(lastRestart.getTime()); - ThreadPoolManager.getInstance().scheduleGeneral(new ServerRestartTask(), lastDelay - (Config.SERVER_RESTART_SCHEDULE_COUNTDOWN * 1000)); + ThreadPoolManager.schedule(new ServerRestartTask(), lastDelay - (Config.SERVER_RESTART_SCHEDULE_COUNTDOWN * 1000)); _log.info("Scheduled server restart at " + lastRestart.getTime() + "."); } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/WalkingManager.java index 9d568d65c4..3da5ea144c 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -301,14 +301,14 @@ public final class WalkingManager implements IGameXmlReader npc.sendDebugMessage("Starting to move at route '" + routeName + "'"); npc.setIsRunning(node.runToLocation()); npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, node); - walk.setWalkCheckTask(ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new StartMovingTask(npc, routeName), 60000, 60000)); // start walk check task, for resuming walk after fight + walk.setWalkCheckTask(ThreadPoolManager.scheduleAtFixedRate(new StartMovingTask(npc, routeName), 60000, 60000)); // start walk check task, for resuming walk after fight _activeRoutes.put(npc.getObjectId(), walk); // register route } else { npc.sendDebugMessage("Failed to start moving along route '" + routeName + "', scheduled"); - ThreadPoolManager.getInstance().scheduleGeneral(new StartMovingTask(npc, routeName), 60000); + ThreadPoolManager.schedule(new StartMovingTask(npc, routeName), 60000); } } else @@ -455,7 +455,7 @@ public final class WalkingManager implements IGameXmlReader walk.setLastAction(System.currentTimeMillis()); } - ThreadPoolManager.getInstance().scheduleGeneral(new ArrivedTask(npc, walk), 100 + (node.getDelay() * 1000L)); + ThreadPoolManager.schedule(new ArrivedTask(npc, walk), 100 + (node.getDelay() * 1000L)); } } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/ClanWar.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/ClanWar.java index ef54a4f680..61a97fa208 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/ClanWar.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/ClanWar.java @@ -56,7 +56,7 @@ public final class ClanWar _startTime = System.currentTimeMillis(); _state = ClanWarState.BLOOD_DECLARATION; - _cancelTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _cancelTask = ThreadPoolManager.schedule(() -> { clanWarTimeout(); }, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); @@ -88,7 +88,7 @@ public final class ClanWar if ((_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) > System.currentTimeMillis()) { - _cancelTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _cancelTask = ThreadPoolManager.schedule(() -> { clanWarTimeout(); }, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); @@ -104,7 +104,7 @@ public final class ClanWar } else { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { ClanTable.getInstance().deleteclanswars(_attackerClanId, _attackedClanId); }, endTimePeriod); @@ -200,7 +200,7 @@ public final class ClanWar _winnerClanId = winnerClan.getId(); _endTime = System.currentTimeMillis(); - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { ClanTable.getInstance().deleteclanswars(cancelor.getId(), winnerClan.getId()); }, (_endTime + TIME_TO_DELETION_AFTER_DEFEAT) - System.currentTimeMillis()); @@ -225,7 +225,7 @@ public final class ClanWar _state = ClanWarState.TIE; _endTime = System.currentTimeMillis(); - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { ClanTable.getInstance().deleteclanswars(attackerClan.getId(), attackedClan.getId()); }, (_endTime + TIME_TO_DELETION_AFTER_CANCELLATION) - System.currentTimeMillis()); diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/CreatureContainer.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/CreatureContainer.java index f64dac8385..da2d7bcc94 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/CreatureContainer.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/CreatureContainer.java @@ -63,7 +63,7 @@ public class CreatureContainer { if ((_task == null) || _task.isDone()) { - _task = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this::update, 1000L, 1000L); + _task = ThreadPoolManager.scheduleAtFixedRate(this::update, 1000L, 1000L); } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/CursedWeapon.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/CursedWeapon.java index d6361de2d2..0f821abc37 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/CursedWeapon.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/CursedWeapon.java @@ -351,7 +351,7 @@ public class CursedWeapon implements INamable { _player.stopTransformation(true); - ThreadPoolManager.getInstance().scheduleGeneral(() -> _player.transform(transformationId, true), 500); + ThreadPoolManager.schedule(() -> _player.transform(transformationId, true), 500); } else { @@ -375,7 +375,7 @@ public class CursedWeapon implements INamable } else { - _removeTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new RemoveTask(), _durationLost * 12000L, _durationLost * 12000L); + _removeTask = ThreadPoolManager.scheduleAtFixedRate(new RemoveTask(), _durationLost * 12000L, _durationLost * 12000L); } } @@ -389,7 +389,7 @@ public class CursedWeapon implements INamable // Start the Life Task _endTime = System.currentTimeMillis() + (_duration * 60000L); - _removeTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new RemoveTask(), _durationLost * 12000L, _durationLost * 12000L); + _removeTask = ThreadPoolManager.scheduleAtFixedRate(new RemoveTask(), _durationLost * 12000L, _durationLost * 12000L); return true; } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/DropProtection.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/DropProtection.java index 9147db2c59..1a62714f0e 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/DropProtection.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/DropProtection.java @@ -103,6 +103,6 @@ public class DropProtection implements Runnable throw new NullPointerException("Trying to protect dropped item to null owner"); } - _task = ThreadPoolManager.getInstance().scheduleGeneral(this, PROTECTED_MILLIS_TIME); + _task = ThreadPoolManager.schedule(this, PROTECTED_MILLIS_TIME); } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/Fishing.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/Fishing.java index 1f87ec266a..e9cfd27a75 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/Fishing.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/Fishing.java @@ -220,10 +220,10 @@ public class Fishing _player.rechargeShots(false, false, true); } - _reelInTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _reelInTask = ThreadPoolManager.schedule(() -> { _player.getFishing().reelInWithReward(); - _startFishingTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> _player.getFishing().castLine(), Rnd.get(baitData.getWaitMin(), baitData.getWaitMax())); + _startFishingTask = ThreadPoolManager.schedule(() -> _player.getFishing().castLine(), Rnd.get(baitData.getWaitMin(), baitData.getWaitMax())); }, Rnd.get(baitData.getTimeMin(), baitData.getTimeMax())); _player.stopMove(null); _player.broadcastPacket(new ExFishingStart(_player, -1, baitData.getLevel(), _baitLocation)); diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/L2Clan.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/L2Clan.java index 953a8ccc63..e7f6838bc6 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/L2Clan.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/L2Clan.java @@ -3131,7 +3131,7 @@ public class L2Clan implements IIdentifiable, INamable _vars = new ClanVariables(getId()); if (Config.CLAN_VARIABLES_STORE_INTERVAL > 0) { - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this::storeVariables, Config.CLAN_VARIABLES_STORE_INTERVAL, Config.CLAN_VARIABLES_STORE_INTERVAL); + ThreadPoolManager.scheduleAtFixedRate(this::storeVariables, Config.CLAN_VARIABLES_STORE_INTERVAL, Config.CLAN_VARIABLES_STORE_INTERVAL); } } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/L2Party.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/L2Party.java index 834811cea4..ca47799cce 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/L2Party.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/L2Party.java @@ -379,7 +379,7 @@ public class L2Party extends AbstractPlayerGroup if (_positionBroadcastTask == null) { - _positionBroadcastTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(() -> + _positionBroadcastTask = ThreadPoolManager.scheduleAtFixedRate(() -> { if (_positionPacket == null) { @@ -1084,7 +1084,7 @@ public class L2Party extends AbstractPlayerGroup } _changeRequestDistributionType = partyDistributionType; _changeDistributionTypeAnswers = new HashSet<>(); - _changeDistributionTypeRequestTask = ThreadPoolManager.getInstance().scheduleGeneral(() -> finishLootRequest(false), PARTY_DISTRIBUTION_TYPE_REQUEST_TIMEOUT.toMillis()); + _changeDistributionTypeRequestTask = ThreadPoolManager.schedule(() -> finishLootRequest(false), PARTY_DISTRIBUTION_TYPE_REQUEST_TIMEOUT.toMillis()); broadcastToPartyMembers(getLeader(), new ExAskModifyPartyLooting(getLeader().getName(), partyDistributionType)); diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/L2Request.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/L2Request.java index c39f47f86e..a65b9b6a50 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/L2Request.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/L2Request.java @@ -123,7 +123,7 @@ public class L2Request { _isRequestor = isRequestor; _isAnswerer = !isRequestor; - ThreadPoolManager.getInstance().scheduleGeneral(() -> clear(), REQUEST_TIMEOUT * 1000); + ThreadPoolManager.schedule(() -> clear(), REQUEST_TIMEOUT * 1000); } /** diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/L2Spawn.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/L2Spawn.java index c62f2adbbe..3ddb0761ac 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/L2Spawn.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/L2Spawn.java @@ -400,7 +400,7 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable // Create a new SpawnTask to launch after the respawn Delay // ClientScheduler.getInstance().scheduleLow(new SpawnTask(npcId), _respawnDelay); - ThreadPoolManager.getInstance().scheduleGeneral(new SpawnTask(oldNpc), hasRespawnRandom() ? Rnd.get(_respawnMinDelay, _respawnMaxDelay) : _respawnMinDelay); + ThreadPoolManager.schedule(new SpawnTask(oldNpc), hasRespawnRandom() ? Rnd.get(_respawnMinDelay, _respawnMaxDelay) : _respawnMinDelay); } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/L2WorldRegion.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/L2WorldRegion.java index f7803399a2..450bb4bda4 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/L2WorldRegion.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/L2WorldRegion.java @@ -215,7 +215,7 @@ public final class L2WorldRegion } // then, set a timer to activate the neighbors - _neighborsTask = ThreadPoolManager.getInstance().scheduleGeneral(new NeighborsTask(true), 1000 * Config.GRID_NEIGHBOR_TURNON_TIME); + _neighborsTask = ThreadPoolManager.schedule(new NeighborsTask(true), 1000 * Config.GRID_NEIGHBOR_TURNON_TIME); } } @@ -235,7 +235,7 @@ public final class L2WorldRegion // start a timer to "suggest" a deactivate to self and neighbors. // suggest means: first check if a neighbor has L2PcInstances in it. If not, deactivate. - _neighborsTask = ThreadPoolManager.getInstance().scheduleGeneral(new NeighborsTask(false), 1000 * Config.GRID_NEIGHBOR_TURNOFF_TIME); + _neighborsTask = ThreadPoolManager.schedule(new NeighborsTask(false), 1000 * Config.GRID_NEIGHBOR_TURNOFF_TIME); } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/MpRewardTask.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/MpRewardTask.java index 32d3f1de5e..cf4458c3a4 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/MpRewardTask.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/MpRewardTask.java @@ -41,7 +41,7 @@ public class MpRewardTask _creature = creature; _count = new AtomicInteger(template.getMpRewardTicks()); _value = calculateBaseValue(npc, creature); - _task = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(this::run, Config.EFFECT_TICK_RATIO, Config.EFFECT_TICK_RATIO); + _task = ThreadPoolManager.scheduleAtFixedRate(this::run, Config.EFFECT_TICK_RATIO, Config.EFFECT_TICK_RATIO); } /** diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/L2Attackable.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/L2Attackable.java index db182482d9..12aee02933 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/L2Attackable.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/L2Attackable.java @@ -232,7 +232,7 @@ public class L2Attackable extends L2Npc { _commandChannelTimer = new CommandChannelTimer(this); _commandChannelLastAttack = System.currentTimeMillis(); - ThreadPoolManager.getInstance().scheduleGeneral(_commandChannelTimer, 10000); // check for last attack + ThreadPoolManager.schedule(_commandChannelTimer, 10000); // check for last attack _firstCommandChannelAttacked.broadcastPacket(new CreatureSay(0, ChatType.PARTYROOM_ALL, "", "You have looting rights!")); // TODO: retail msg } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/L2Character.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/L2Character.java index d1c3434468..9fe4844c6c 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/L2Character.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/L2Character.java @@ -1100,7 +1100,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe if (getCurrentMp() < mpConsume) { // If L2PcInstance doesn't have enough MP, stop the attack - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), 1000); + ThreadPoolManager.schedule(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), 1000); sendPacket(SystemMessageId.NOT_ENOUGH_MP); sendPacket(ActionFailed.STATIC_PACKET); return; @@ -1118,7 +1118,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe else { // Cancel the action because the bow can't be re-use at this moment - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), 1000); + ThreadPoolManager.schedule(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), 1000); sendPacket(ActionFailed.STATIC_PACKET); return; } @@ -1222,7 +1222,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe } // Notify AI with EVT_READY_TO_ACT - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), timeAtk); + ThreadPoolManager.schedule(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), timeAtk); } } @@ -1301,7 +1301,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe } // Create a new hit task with Medium priority - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk); + ThreadPoolManager.schedule(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk); // Calculate and set the disable delay of the bow in function of the Attack Speed _disableRangedAttackEndTime = ((sAtk + reuse) / GameTimeController.MILLIS_IN_TICK) + GameTimeController.getInstance().getGameTicks(); @@ -1371,10 +1371,10 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe } // Create a new hit task with Medium priority for hit 1 - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk / 2); + ThreadPoolManager.schedule(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk / 2); // Create a new hit task with Medium priority for hit 2 with a higher delay - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, target, damage2, crit2, miss2, attack.hasSoulshot(), shld2), sAtk); + ThreadPoolManager.schedule(new HitTask(this, target, damage2, crit2, miss2, attack.hasSoulshot(), shld2), sAtk); // Add those hits to the Server-Client packet Attack attack.addHit(target, damage1, miss1, crit1, shld1); @@ -1401,7 +1401,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe damage /= 2; } - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, surroundTarget, damage, crit, miss, attack.hasSoulshot(), shld), sAtk / 2); + ThreadPoolManager.schedule(new HitTask(this, surroundTarget, damage, crit, miss, attack.hasSoulshot(), shld), sAtk / 2); attack.addHit(surroundTarget, damage, miss, crit, shld); miss1 |= miss; } @@ -1421,7 +1421,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe damage /= 2; } - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, surroundTarget, damage, crit, miss, attack.hasSoulshot(), shld), sAtk); + ThreadPoolManager.schedule(new HitTask(this, surroundTarget, damage, crit, miss, attack.hasSoulshot(), shld), sAtk); attack.addHit(surroundTarget, damage, miss, crit, shld); miss2 |= miss; } @@ -1471,7 +1471,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe } // Create a new hit task with Medium priority - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk); + ThreadPoolManager.schedule(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk); // Add this hit to the Server-Client packet Attack attack.addHit(target, damage1, miss1, crit1, shld1); @@ -1495,7 +1495,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe damage = (int) Formulas.calcAutoAttackDamage(this, surroundTarget, 0, shld, crit, attack.hasSoulshot()); } - ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, surroundTarget, damage, crit, miss, attack.hasSoulshot(), shld), sAtk); + ThreadPoolManager.schedule(new HitTask(this, surroundTarget, damage, crit, miss, attack.hasSoulshot(), shld), sAtk); attack.addHit(surroundTarget, damage, miss, crit, shld); miss1 |= miss; } @@ -3332,7 +3332,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe if (distFraction > 1) { - ThreadPoolManager.getInstance().executeAi(() -> getAI().notifyEvent(CtrlEvent.EVT_ARRIVED)); + ThreadPoolManager.execute(() -> getAI().notifyEvent(CtrlEvent.EVT_ARRIVED)); return true; } @@ -3773,7 +3773,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe // Create a task to notify the AI that L2Character arrives at a check point of the movement if ((ticksToMove * GameTimeController.MILLIS_IN_TICK) > 3000) { - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_ARRIVED_REVALIDATE), 2000); + ThreadPoolManager.schedule(new NotifyAITask(this, CtrlEvent.EVT_ARRIVED_REVALIDATE), 2000); } // the CtrlEvent.EVT_ARRIVED will be sent when the character will actually arrive @@ -3854,7 +3854,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe // Create a task to notify the AI that L2Character arrives at a check point of the movement if ((ticksToMove * GameTimeController.MILLIS_IN_TICK) > 3000) { - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_ARRIVED_REVALIDATE), 2000); + ThreadPoolManager.schedule(new NotifyAITask(this, CtrlEvent.EVT_ARRIVED_REVALIDATE), 2000); } // the CtrlEvent.EVT_ARRIVED will be sent when the character will actually arrive diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/L2Npc.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/L2Npc.java index f35c9ed391..018b30b595 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/L2Npc.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/L2Npc.java @@ -1216,7 +1216,7 @@ public class L2Npc extends L2Character public void scheduleDespawn(long delay) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { if (!isDecayed()) { diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/L2Vehicle.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/L2Vehicle.java index 6e1c53a7f2..f9904262c1 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/L2Vehicle.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/L2Vehicle.java @@ -87,7 +87,7 @@ public abstract class L2Vehicle extends L2Character { if (_engine != null) { - ThreadPoolManager.getInstance().scheduleGeneral(_engine, delay); + ThreadPoolManager.schedule(_engine, delay); } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2ControllableAirShipInstance.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2ControllableAirShipInstance.java index 642b3eba43..3d61e79b4e 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2ControllableAirShipInstance.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2ControllableAirShipInstance.java @@ -253,8 +253,8 @@ public class L2ControllableAirShipInstance extends L2AirShipInstance public void onSpawn() { super.onSpawn(); - _checkTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new CheckTask(), 60000, 10000); - _consumeFuelTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new ConsumeFuelTask(), 60000, 60000); + _checkTask = ThreadPoolManager.scheduleAtFixedRate(new CheckTask(), 60000, 10000); + _consumeFuelTask = ThreadPoolManager.scheduleAtFixedRate(new ConsumeFuelTask(), 60000, 60000); } @Override @@ -326,7 +326,7 @@ public class L2ControllableAirShipInstance extends L2AirShipInstance if (isSpawned() && isEmpty() && !isInDock()) { // deleteMe() can't be called from CheckTask because task should not cancel itself - ThreadPoolManager.getInstance().executeGeneral(new DecayTask()); + ThreadPoolManager.execute(new DecayTask()); } } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2DecoyInstance.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2DecoyInstance.java index 3e20bde3da..8f14bf5519 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2DecoyInstance.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2DecoyInstance.java @@ -53,8 +53,8 @@ public class L2DecoyInstance extends L2Character _totalLifeTime = totalLifeTime; _timeRemaining = _totalLifeTime; final int skilllevel = getTemplate().getDisplayId() - 13070; - _DecoyLifeTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new DecoyLifetime(getOwner(), this), 1000, 1000); - _HateSpam = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new HateSpam(this, SkillData.getInstance().getSkill(5272, skilllevel)), 2000, 5000); + _DecoyLifeTask = ThreadPoolManager.scheduleAtFixedRate(new DecoyLifetime(getOwner(), this), 1000, 1000); + _HateSpam = ThreadPoolManager.scheduleAtFixedRate(new HateSpam(this, SkillData.getInstance().getSkill(5272, skilllevel)), 2000, 5000); } @Override diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2DoorInstance.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2DoorInstance.java index 76153869d2..7dfa85a48b 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2DoorInstance.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2DoorInstance.java @@ -107,7 +107,7 @@ public final class L2DoorInstance extends L2Character { delay += Rnd.get(getTemplate().getRandomTime()); } - ThreadPoolManager.getInstance().scheduleGeneral(new TimerOpen(), delay * 1000); + ThreadPoolManager.schedule(new TimerOpen(), delay * 1000); } @Override @@ -646,7 +646,7 @@ public final class L2DoorInstance extends L2Character _autoCloseTask = null; oldTask.cancel(false); } - _autoCloseTask = ThreadPoolManager.getInstance().scheduleGeneral(new AutoClose(), getTemplate().getCloseTime() * 1000); + _autoCloseTask = ThreadPoolManager.schedule(new AutoClose(), getTemplate().getCloseTime() * 1000); } class AutoClose implements Runnable @@ -681,7 +681,7 @@ public final class L2DoorInstance extends L2Character { delay += Rnd.get(getTemplate().getRandomTime()); } - ThreadPoolManager.getInstance().scheduleGeneral(this, delay * 1000); + ThreadPoolManager.schedule(this, delay * 1000); } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2FortCommanderInstance.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2FortCommanderInstance.java index cdbc48a84e..56c68106bc 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2FortCommanderInstance.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2FortCommanderInstance.java @@ -145,7 +145,7 @@ public class L2FortCommanderInstance extends L2DefenderInstance { broadcastSay(ChatType.NPC_SHOUT, npcString, npcString.getParamCount() == 1 ? attacker.getName() : null); setCanTalk(false); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleTalkTask(), 10000); + ThreadPoolManager.schedule(new ScheduleTalkTask(), 10000); } } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2PcInstance.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2PcInstance.java index fdc391c521..01fbbd1c43 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2PcInstance.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2PcInstance.java @@ -818,7 +818,7 @@ public final class L2PcInstance extends L2Playable if (_PvPRegTask == null) { - _PvPRegTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new PvPFlagTask(this), 1000, 1000); + _PvPRegTask = ThreadPoolManager.scheduleAtFixedRate(new PvPFlagTask(this), 1000, 1000); } } @@ -2822,7 +2822,7 @@ public final class L2PcInstance extends L2Playable getAI().setIntention(CtrlIntention.AI_INTENTION_REST); broadcastPacket(new ChangeWaitType(this, ChangeWaitType.WT_SITTING)); // Schedule a sit down task to wait for the animation to finish - ThreadPoolManager.getInstance().scheduleGeneral(new SitDownTask(this), 2500); + ThreadPoolManager.schedule(new SitDownTask(this), 2500); setBlockActions(true); } } @@ -2845,7 +2845,7 @@ public final class L2PcInstance extends L2Playable broadcastPacket(new ChangeWaitType(this, ChangeWaitType.WT_STANDING)); // Schedule a stand up task to wait for the animation to finish - ThreadPoolManager.getInstance().scheduleGeneral(new StandUpTask(this), 2500); + ThreadPoolManager.schedule(new StandUpTask(this), 2500); } } @@ -4302,7 +4302,7 @@ public final class L2PcInstance extends L2Playable } if (Config.GAMEGUARD_ENFORCE) { - ThreadPoolManager.getInstance().scheduleGeneral(new GameGuardCheckTask(this), 30 * 1000); + ThreadPoolManager.schedule(new GameGuardCheckTask(this), 30 * 1000); } } @@ -8514,7 +8514,7 @@ public final class L2PcInstance extends L2Playable _inventoryDisable = val; if (val) { - ThreadPoolManager.getInstance().scheduleGeneral(new InventoryEnableTask(this), 1500); + ThreadPoolManager.schedule(new InventoryEnableTask(this), 1500); } } @@ -9816,7 +9816,7 @@ public final class L2PcInstance extends L2Playable { if (_taskWarnUserTakeBreak == null) { - _taskWarnUserTakeBreak = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new WarnUserTakeBreakTask(this), 3600000, 3600000); + _taskWarnUserTakeBreak = ThreadPoolManager.scheduleAtFixedRate(new WarnUserTakeBreakTask(this), 3600000, 3600000); } } @@ -9842,7 +9842,7 @@ public final class L2PcInstance extends L2Playable { if (_taskRentPet == null) { - _taskRentPet = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new RentPetTask(this), seconds * 1000L, seconds * 1000L); + _taskRentPet = ThreadPoolManager.scheduleAtFixedRate(new RentPetTask(this), seconds * 1000L, seconds * 1000L); } } @@ -9873,7 +9873,7 @@ public final class L2PcInstance extends L2Playable final int timeinwater = (int) getStat().getValue(Stats.BREATH, 60000); sendPacket(new SetupGauge(getObjectId(), 2, timeinwater)); - _taskWater = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new WaterTask(this), timeinwater, 1000); + _taskWater = ThreadPoolManager.scheduleAtFixedRate(new WaterTask(this), timeinwater, 1000); } } @@ -10254,7 +10254,7 @@ public final class L2PcInstance extends L2Playable { if (_teleportWatchdog == null) { - _teleportWatchdog = ThreadPoolManager.getInstance().scheduleGeneral(new TeleportWatchdogTask(this), Config.TELEPORT_WATCHDOG_TIMEOUT * 1000); + _teleportWatchdog = ThreadPoolManager.schedule(new TeleportWatchdogTask(this), Config.TELEPORT_WATCHDOG_TIMEOUT * 1000); } } } @@ -11144,7 +11144,7 @@ public final class L2PcInstance extends L2Playable } if (_fameTask == null) { - _fameTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FameTask(this, fameFixRate), delay, delay); + _fameTask = ThreadPoolManager.scheduleAtFixedRate(new FameTask(this, fameFixRate), delay, delay); } } @@ -11264,7 +11264,7 @@ public final class L2PcInstance extends L2Playable _soulTask.cancel(false); _soulTask = null; } - _soulTask = ThreadPoolManager.getInstance().scheduleGeneral(new ResetSoulsTask(this), 600000); + _soulTask = ThreadPoolManager.schedule(new ResetSoulsTask(this), 600000); } @@ -11607,7 +11607,7 @@ public final class L2PcInstance extends L2Playable sendPacket(new SetupGauge(3, (getCurrentFeed() * 10000) / getFeedConsume(), (getMaxFeed() * 10000) / getFeedConsume())); if (!isDead()) { - _mountFeedTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new PetFeedTask(this), 10000, 10000); + _mountFeedTask = ThreadPoolManager.scheduleAtFixedRate(new PetFeedTask(this), 10000, 10000); } } else if (_canFeed) @@ -11617,7 +11617,7 @@ public final class L2PcInstance extends L2Playable sendPacket(sg); if (!isDead()) { - _mountFeedTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new PetFeedTask(this), 10000, 10000); + _mountFeedTask = ThreadPoolManager.scheduleAtFixedRate(new PetFeedTask(this), 10000, 10000); } } } @@ -11694,7 +11694,7 @@ public final class L2PcInstance extends L2Playable public void enteredNoLanding(int delay) { - _dismountTask = ThreadPoolManager.getInstance().scheduleGeneral(new DismountTask(this), delay * 1000); + _dismountTask = ThreadPoolManager.schedule(new DismountTask(this), delay * 1000); } public void exitedNoLanding() @@ -11815,7 +11815,7 @@ public final class L2PcInstance extends L2Playable _chargeTask.cancel(false); _chargeTask = null; } - _chargeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ResetChargesTask(this), 600000); + _chargeTask = ThreadPoolManager.schedule(new ResetChargesTask(this), 600000); } /** @@ -12880,7 +12880,7 @@ public final class L2PcInstance extends L2Playable public void startRecoGiveTask() { // Create task to give new recommendations - _recoGiveTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new RecoGiveTask(this), 7200000, 3600000); + _recoGiveTask = ThreadPoolManager.scheduleAtFixedRate(new RecoGiveTask(this), 7200000, 3600000); // Store new data storeRecommendations(); @@ -13808,7 +13808,7 @@ public final class L2PcInstance extends L2Playable stopOnlineTimeUpdateTask(); } - _onlineTimeUpdateTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this::updateOnlineTime, 60 * 1000L, 60 * 1000L); + _onlineTimeUpdateTask = ThreadPoolManager.scheduleAtFixedRate(this::updateOnlineTime, 60 * 1000L, 60 * 1000L); } private void updateOnlineTime() diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2PetInstance.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2PetInstance.java index 026d13c866..9b9c9b794d 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2PetInstance.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2PetInstance.java @@ -1130,7 +1130,7 @@ public class L2PetInstance extends L2Summon stopFeed(); if (!isDead() && (getOwner().getPet() == this)) { - _feedTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FeedTask(), 10000, 10000); + _feedTask = ThreadPoolManager.scheduleAtFixedRate(new FeedTask(), 10000, 10000); } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2RaceManagerInstance.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2RaceManagerInstance.java index 56e09123e5..9896791a73 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2RaceManagerInstance.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2RaceManagerInstance.java @@ -106,27 +106,26 @@ public class L2RaceManagerInstance extends L2Npc _managers = new CopyOnWriteArrayList<>(); - final ThreadPoolManager s = ThreadPoolManager.getInstance(); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKETS_ARE_NOW_AVAILABLE_FOR_MONSTER_RACE_S1), 0, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.NOW_SELLING_TICKETS_FOR_MONSTER_RACE_S1), 30 * SECOND, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKETS_ARE_NOW_AVAILABLE_FOR_MONSTER_RACE_S1), MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.NOW_SELLING_TICKETS_FOR_MONSTER_RACE_S1), MINUTE + (30 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 2 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 3 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 4 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 5 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 6 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.TICKETS_SALES_ARE_CLOSED_FOR_MONSTER_RACE_S1_ODDS_ARE_POSTED), 7 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S2_WILL_BEGIN_IN_S1_MINUTE_S), 7 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S2_WILL_BEGIN_IN_S1_MINUTE_S), 8 * MINUTE, 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S1_WILL_BEGIN_IN_30_SECONDS), (8 * MINUTE) + (30 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S1_IS_ABOUT_TO_BEGIN_COUNTDOWN_IN_FIVE_SECONDS), (8 * MINUTE) + (50 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (55 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (56 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (57 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (58 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (59 * SECOND), 10 * MINUTE); - s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.THEY_RE_OFF), 9 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKETS_ARE_NOW_AVAILABLE_FOR_MONSTER_RACE_S1), 0, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.NOW_SELLING_TICKETS_FOR_MONSTER_RACE_S1), 30 * SECOND, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKETS_ARE_NOW_AVAILABLE_FOR_MONSTER_RACE_S1), MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.NOW_SELLING_TICKETS_FOR_MONSTER_RACE_S1), MINUTE + (30 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 2 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 3 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 4 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 5 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_END_IN_S1_MINUTE_S), 6 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.TICKETS_SALES_ARE_CLOSED_FOR_MONSTER_RACE_S1_ODDS_ARE_POSTED), 7 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S2_WILL_BEGIN_IN_S1_MINUTE_S), 7 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S2_WILL_BEGIN_IN_S1_MINUTE_S), 8 * MINUTE, 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S1_WILL_BEGIN_IN_30_SECONDS), (8 * MINUTE) + (30 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.MONSTER_RACE_S1_IS_ABOUT_TO_BEGIN_COUNTDOWN_IN_FIVE_SECONDS), (8 * MINUTE) + (50 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (55 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (56 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (57 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (58 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.THE_RACE_WILL_BEGIN_IN_S1_SECOND_S), (8 * MINUTE) + (59 * SECOND), 10 * MINUTE); + ThreadPoolManager.scheduleAtFixedRate(new Announcement(SystemMessageId.THEY_RE_OFF), 9 * MINUTE, 10 * MINUTE); } _managers.add(this); } @@ -244,7 +243,7 @@ public class L2RaceManagerInstance extends L2Npc _packet = new MonRaceInfo(_codes[1][0], _codes[1][1], race.getMonsters(), race.getSpeeds()); sendMonsterInfo(); - ThreadPoolManager.getInstance().scheduleGeneral(new RunRace(), 5000); + ThreadPoolManager.schedule(new RunRace(), 5000); } else { @@ -549,7 +548,7 @@ public class L2RaceManagerInstance extends L2Npc { _packet = new MonRaceInfo(_codes[2][0], _codes[2][1], MonsterRace.getInstance().getMonsters(), MonsterRace.getInstance().getSpeeds()); sendMonsterInfo(); - ThreadPoolManager.getInstance().scheduleGeneral(new RunEnd(), 30000); + ThreadPoolManager.schedule(new RunEnd(), 30000); } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2RaidBossInstance.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2RaidBossInstance.java index 408df2d07e..b2a9629352 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2RaidBossInstance.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2RaidBossInstance.java @@ -72,7 +72,7 @@ public class L2RaidBossInstance extends L2MonsterInstance @Override protected void startMaintenanceTask() { - _maintenanceTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(() -> checkAndReturnToSpawn(), 60000, getMaintenanceInterval() + Rnd.get(5000)); + _maintenanceTask = ThreadPoolManager.scheduleAtFixedRate(() -> checkAndReturnToSpawn(), 60000, getMaintenanceInterval() + Rnd.get(5000)); } protected void checkAndReturnToSpawn() diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2ServitorInstance.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2ServitorInstance.java index 0a240610de..dc45e82daa 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2ServitorInstance.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2ServitorInstance.java @@ -85,7 +85,7 @@ public class L2ServitorInstance extends L2Summon implements Runnable super.onSpawn(); if ((_lifeTime > 0) && (_summonLifeTask == null)) { - _summonLifeTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this, 0, 5000); + _summonLifeTask = ThreadPoolManager.scheduleAtFixedRate(this, 0, 5000); } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2SiegeFlagInstance.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2SiegeFlagInstance.java index 36f948d921..eb169af1ce 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2SiegeFlagInstance.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2SiegeFlagInstance.java @@ -163,7 +163,7 @@ public class L2SiegeFlagInstance extends L2Npc // send warning to owners of headquarters that theirs base is under attack _clan.broadcastToOnlineMembers(SystemMessage.getSystemMessage(SystemMessageId.YOUR_BASE_IS_BEING_ATTACKED)); setCanTalk(false); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleTalkTask(), 20000); + ThreadPoolManager.schedule(new ScheduleTalkTask(), 20000); } } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2TamedBeastInstance.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2TamedBeastInstance.java index 6ef311e1a9..0a04416d20 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2TamedBeastInstance.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2TamedBeastInstance.java @@ -153,7 +153,7 @@ public final class L2TamedBeastInstance extends L2FeedableBeastInstance { _durationCheckTask.cancel(true); } - _durationCheckTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new CheckDuration(this), DURATION_CHECK_INTERVAL, DURATION_CHECK_INTERVAL); + _durationCheckTask = ThreadPoolManager.scheduleAtFixedRate(new CheckDuration(this), DURATION_CHECK_INTERVAL, DURATION_CHECK_INTERVAL); } } @@ -217,10 +217,10 @@ public final class L2TamedBeastInstance extends L2FeedableBeastInstance int delay = 100; for (Skill skill : _beastSkills) { - ThreadPoolManager.getInstance().scheduleGeneral(new buffCast(skill), delay); + ThreadPoolManager.schedule(new buffCast(skill), delay); delay += (100 + skill.getHitTime()); } - ThreadPoolManager.getInstance().scheduleGeneral(new buffCast(null), delay); + ThreadPoolManager.schedule(new buffCast(null), delay); } private class buffCast implements Runnable @@ -284,7 +284,7 @@ public final class L2TamedBeastInstance extends L2FeedableBeastInstance { _buffTask.cancel(true); } - _buffTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new CheckOwnerBuffs(this, totalBuffsAvailable), BUFF_INTERVAL, BUFF_INTERVAL); + _buffTask = ThreadPoolManager.scheduleAtFixedRate(new CheckOwnerBuffs(this, totalBuffsAvailable), BUFF_INTERVAL, BUFF_INTERVAL); } } else diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2TrapInstance.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2TrapInstance.java index c4ab166c6d..6ae55f616d 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2TrapInstance.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/instance/L2TrapInstance.java @@ -77,7 +77,7 @@ public final class L2TrapInstance extends L2Npc _remainingTime = _lifeTime; if (_skill != null) { - _trapTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new TrapTask(this), TICK, TICK); + _trapTask = ThreadPoolManager.scheduleAtFixedRate(new TrapTask(this), TICK, TICK); } } @@ -341,7 +341,7 @@ public final class L2TrapInstance extends L2Npc EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); - ThreadPoolManager.getInstance().scheduleGeneral(new TrapTriggerTask(this), 500); + ThreadPoolManager.schedule(new TrapTriggerTask(this), 500); } public void unSummon() diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/request/AbstractRequest.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/request/AbstractRequest.java index b7f9e2c67c..7950d61315 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/request/AbstractRequest.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/request/AbstractRequest.java @@ -55,7 +55,7 @@ public abstract class AbstractRequest public void scheduleTimeout(long delay) { - _timeOutTask = ThreadPoolManager.getInstance().scheduleGeneral(this::onTimeout, delay); + _timeOutTask = ThreadPoolManager.schedule(this::onTimeout, delay); } public boolean isTimeout() diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/status/CharStatus.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/status/CharStatus.java index 09073aa317..53571ee400 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/status/CharStatus.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/status/CharStatus.java @@ -216,7 +216,7 @@ public class CharStatus final int period = Formulas.getRegeneratePeriod(getActiveChar()); // Create the HP/MP/CP Regeneration task - _regTask = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new RegenTask(), period, period); + _regTask = ThreadPoolManager.scheduleAtFixedRate(new RegenTask(), period, period); } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/tasks/attackable/CommandChannelTimer.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/tasks/attackable/CommandChannelTimer.java index 87cc5f4937..6f37725f33 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/tasks/attackable/CommandChannelTimer.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/tasks/attackable/CommandChannelTimer.java @@ -48,7 +48,7 @@ public final class CommandChannelTimer implements Runnable } else { - ThreadPoolManager.getInstance().scheduleGeneral(this, 10000); // 10sec + ThreadPoolManager.schedule(this, 10000); // 10sec } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/tasks/npc/RandomAnimationTask.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/tasks/npc/RandomAnimationTask.java index 68c814f0a2..a6ffb508f1 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/tasks/npc/RandomAnimationTask.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/tasks/npc/RandomAnimationTask.java @@ -91,7 +91,7 @@ public class RandomAnimationTask implements Runnable final int interval = Rnd.get(minWait, maxWait) * 1000; // Create a RandomAnimation Task that will be launched after the calculated delay - ThreadPoolManager.getInstance().scheduleGeneral(this, interval); + ThreadPoolManager.schedule(this, interval); } /** diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/tasks/npc/trap/TrapTriggerTask.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/tasks/npc/trap/TrapTriggerTask.java index 6fa1c2f1dd..b15e938ffe 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/tasks/npc/trap/TrapTriggerTask.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/tasks/npc/trap/TrapTriggerTask.java @@ -38,7 +38,7 @@ public class TrapTriggerTask implements Runnable try { _trap.doCast(_trap.getSkill()); - ThreadPoolManager.getInstance().scheduleGeneral(new TrapUnsummonTask(_trap), _trap.getSkill().getHitTime() + 300); + ThreadPoolManager.schedule(new TrapUnsummonTask(_trap), _trap.getSkill().getHitTime() + 300); } catch (Exception e) { diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/tasks/player/FlyMoveStartTask.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/tasks/player/FlyMoveStartTask.java index 1f789e0c09..4dff07f0c4 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/tasks/player/FlyMoveStartTask.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/actor/tasks/player/FlyMoveStartTask.java @@ -51,7 +51,7 @@ public class FlyMoveStartTask implements Runnable if (!_player.hasRequest(SayuneRequest.class)) { _player.sendPacket(ExNotifyFlyMoveStart.STATIC_PACKET); - ThreadPoolManager.getInstance().scheduleGeneral(this, 1000L); + ThreadPoolManager.schedule(this, 1000L); } } } \ No newline at end of file diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/announce/AutoAnnouncement.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/announce/AutoAnnouncement.java index 931905492d..7d2ed5035b 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/announce/AutoAnnouncement.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/announce/AutoAnnouncement.java @@ -160,7 +160,7 @@ public final class AutoAnnouncement extends Announcement implements Runnable _task.cancel(false); } _currentState = _repeat; - _task = ThreadPoolManager.getInstance().scheduleGeneral(this, _initial); + _task = ThreadPoolManager.schedule(this, _initial); } @Override @@ -178,7 +178,7 @@ public final class AutoAnnouncement extends Announcement implements Runnable _currentState--; } - _task = ThreadPoolManager.getInstance().scheduleGeneral(this, _delay); + _task = ThreadPoolManager.schedule(this, _delay); } } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/buylist/Product.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/buylist/Product.java index e5f383ff32..10242424c7 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/buylist/Product.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/buylist/Product.java @@ -119,7 +119,7 @@ public final class Product } if ((_restockTask == null) || _restockTask.isDone()) { - _restockTask = ThreadPoolManager.getInstance().scheduleGeneral(this::restock, getRestockDelay()); + _restockTask = ThreadPoolManager.schedule(this::restock, getRestockDelay()); } final boolean result = _count.addAndGet(-val) >= 0; save(); @@ -136,7 +136,7 @@ public final class Product final long remainTime = nextRestockTime - System.currentTimeMillis(); if (remainTime > 0) { - _restockTask = ThreadPoolManager.getInstance().scheduleGeneral(this::restock, remainTime); + _restockTask = ThreadPoolManager.schedule(this::restock, remainTime); } else { diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/cubic/CubicInstance.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/cubic/CubicInstance.java index ada76382ec..c92709158b 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/cubic/CubicInstance.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/cubic/CubicInstance.java @@ -52,8 +52,8 @@ public class CubicInstance private void activate() { - _skillUseTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(this::tryToUseSkill, 0, _template.getDelay() * 1000); - _expireTask = ThreadPoolManager.getInstance().scheduleAi(this::deactivate, _template.getDuration() * 1000); + _skillUseTask = ThreadPoolManager.scheduleAtFixedRate(this::tryToUseSkill, 0, _template.getDelay() * 1000); + _expireTask = ThreadPoolManager.schedule(this::deactivate, _template.getDuration() * 1000); } public void deactivate() diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/BlockCheckerEngine.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/BlockCheckerEngine.java index e58d229768..c161d20dac 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/BlockCheckerEngine.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/BlockCheckerEngine.java @@ -306,7 +306,7 @@ public final class BlockCheckerEngine _abnormalEnd = true; - ThreadPoolManager.getInstance().executeGeneral(new EndEvent()); + ThreadPoolManager.execute(new EndEvent()); if (Config.DEBUG) { @@ -429,7 +429,7 @@ public final class BlockCheckerEngine } _isStarted = true; // Spawn the blocks - ThreadPoolManager.getInstance().executeGeneral(new SpawnRound(16, 1)); + ThreadPoolManager.execute(new SpawnRound(16, 1)); // Start up player parameters setUpPlayers(); // Set the started time @@ -463,15 +463,15 @@ public final class BlockCheckerEngine { case 1: // Schedule second spawn round - _task = ThreadPoolManager.getInstance().scheduleGeneral(new SpawnRound(20, 2), 60000); + _task = ThreadPoolManager.schedule(new SpawnRound(20, 2), 60000); break; case 2: // Schedule third spawn round - _task = ThreadPoolManager.getInstance().scheduleGeneral(new SpawnRound(14, 3), 60000); + _task = ThreadPoolManager.schedule(new SpawnRound(14, 3), 60000); break; case 3: // Schedule Event End Count Down - _task = ThreadPoolManager.getInstance().scheduleGeneral(new EndEvent(), 180000); + _task = ThreadPoolManager.schedule(new EndEvent(), 180000); break; } // random % 2, if == 0 will spawn a red block @@ -530,7 +530,7 @@ public final class BlockCheckerEngine SpawnTable.getInstance().addNewSpawn(girlSpawn, false); girlSpawn.init(); // Schedule his deletion after 9 secs of spawn - ThreadPoolManager.getInstance().scheduleGeneral(new CarryingGirlUnspawn(girlSpawn), 9000); + ThreadPoolManager.schedule(new CarryingGirlUnspawn(girlSpawn), 9000); } catch (Exception e) { @@ -573,7 +573,7 @@ public final class BlockCheckerEngine /* * private class CountDown implements Runnable { - * @Override public void run() { _holder.broadCastPacketToTeam(SystemMessage.getSystemMessage(SystemMessageId.BLOCK_CHECKER_WILL_END_IN_5_SECONDS)); ThreadPoolManager.getInstance().scheduleGeneral(new EndEvent(), 5000); } } + * @Override public void run() { _holder.broadCastPacketToTeam(SystemMessage.getSystemMessage(SystemMessageId.BLOCK_CHECKER_WILL_END_IN_5_SECONDS)); ThreadPoolManager.schedule(new EndEvent(), 5000); } } */ /** diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/Castle.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/Castle.java index 2ef599c33b..b657df5013 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/Castle.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/Castle.java @@ -166,11 +166,11 @@ public final class Castle extends AbstractResidence final long currentTime = System.currentTimeMillis(); if (_endDate > currentTime) { - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(cwh), _endDate - currentTime); + ThreadPoolManager.schedule(new FunctionTask(cwh), _endDate - currentTime); } else { - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(cwh), 0); + ThreadPoolManager.schedule(new FunctionTask(cwh), 0); } } @@ -204,7 +204,7 @@ public final class Castle extends AbstractResidence { ClanTable.getInstance().getClan(getOwnerId()).getWarehouse().destroyItemByItemId("CS_function_fee", Inventory.ADENA_ID, fee, null, null); } - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(true), getRate()); + ThreadPoolManager.schedule(new FunctionTask(true), getRate()); } else { diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/ClanHall.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/ClanHall.java index e8b2e61692..2cfbef3323 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/ClanHall.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/ClanHall.java @@ -263,7 +263,7 @@ public final class ClanHall extends AbstractResidence final int failDays = getCostFailDay(); final long time = failDays > 0 ? (failDays > 8 ? Instant.now().toEpochMilli() : Instant.ofEpochMilli(getPaidUntil()).plus(Duration.ofDays(failDays + 1)).toEpochMilli()) : getPaidUntil(); - _checkPaymentTask = ThreadPoolManager.getInstance().scheduleGeneral(new CheckPaymentTask(), time - System.currentTimeMillis()); + _checkPaymentTask = ThreadPoolManager.schedule(new CheckPaymentTask(), time - System.currentTimeMillis()); } else { @@ -363,7 +363,7 @@ public final class ClanHall extends AbstractResidence } else { - _checkPaymentTask = ThreadPoolManager.getInstance().scheduleGeneral(new CheckPaymentTask(), 1, TimeUnit.DAYS); + _checkPaymentTask = ThreadPoolManager.schedule(new CheckPaymentTask(), 24 * 60 * 60 * 1000); // 1 day final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.PAYMENT_FOR_YOUR_CLAN_HALL_HAS_NOT_BEEN_MADE_PLEASE_MAKE_PAYMENT_TO_YOUR_CLAN_WAREHOUSE_BY_S1_TOMORROW); sm.addInt(getLease()); clan.broadcastToOnlineMembers(sm); @@ -373,7 +373,7 @@ public final class ClanHall extends AbstractResidence { clan.getWarehouse().destroyItem("Clan Hall Lease", Inventory.ADENA_ID, getLease(), null, null); setPaidUntil(Instant.ofEpochMilli(getPaidUntil()).plus(Duration.ofDays(7)).toEpochMilli()); - _checkPaymentTask = ThreadPoolManager.getInstance().scheduleGeneral(new CheckPaymentTask(), getPaidUntil() - System.currentTimeMillis()); + _checkPaymentTask = ThreadPoolManager.schedule(new CheckPaymentTask(), getPaidUntil() - System.currentTimeMillis()); updateDB(); } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/Duel.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/Duel.java index c8cfdbc0a1..6879c073af 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/Duel.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/Duel.java @@ -99,7 +99,7 @@ public class Duel broadcastToTeam2(sm); } // Schedule duel start - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartDuelTask(this), 3000); + ThreadPoolManager.schedule(new ScheduleStartDuelTask(this), 3000); } public static class PlayerCondition @@ -207,14 +207,14 @@ public class Duel } case Continue: { - ThreadPoolManager.getInstance().scheduleGeneral(this, 1000); + ThreadPoolManager.schedule(this, 1000); break; } default: { setFinished(true); playKneelAnimation(); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndDuelTask(_duel, _duel.checkEndDuelCondition()), 5000); + ThreadPoolManager.schedule(new ScheduleEndDuelTask(_duel, _duel.checkEndDuelCondition()), 5000); if (getDueldInstance() != null) { getDueldInstance().destroy(); @@ -255,11 +255,11 @@ public class Duel _duel.teleportPlayers(); // give players 20 seconds to complete teleport and get ready (its ought to be 30 on offical..) - ThreadPoolManager.getInstance().scheduleGeneral(this, 20000); + ThreadPoolManager.schedule(this, 20000); } else if (count > 0) // duel not started yet - continue countdown { - ThreadPoolManager.getInstance().scheduleGeneral(this, 1000); + ThreadPoolManager.schedule(this, 1000); } else { @@ -436,7 +436,7 @@ public class Duel broadcastToTeam2(B04_S01); // start duelling task - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleDuelTask(this), 1000); + ThreadPoolManager.schedule(new ScheduleDuelTask(this), 1000); } /** diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/Fort.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/Fort.java index 1aa9d4cc83..d892c13f8c 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/Fort.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/Fort.java @@ -166,11 +166,11 @@ public final class Fort extends AbstractResidence final long currentTime = System.currentTimeMillis(); if (_endDate > currentTime) { - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(cwh), _endDate - currentTime); + ThreadPoolManager.schedule(new FunctionTask(cwh), _endDate - currentTime); } else { - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(cwh), 0); + ThreadPoolManager.schedule(new FunctionTask(cwh), 0); } } @@ -204,7 +204,7 @@ public final class Fort extends AbstractResidence { getOwnerClan().getWarehouse().destroyItemByItemId("CS_function_fee", Inventory.ADENA_ID, fee, null, null); } - ThreadPoolManager.getInstance().scheduleGeneral(new FunctionTask(true), getRate()); + ThreadPoolManager.schedule(new FunctionTask(true), getRate()); } else { @@ -273,7 +273,7 @@ public final class Fort extends AbstractResidence public void endOfSiege(L2Clan clan) { - ThreadPoolManager.getInstance().executeAi(new endFortressSiege(this, clan)); + ThreadPoolManager.execute(new endFortressSiege(this, clan)); } /** @@ -594,15 +594,15 @@ public final class Fort extends AbstractResidence initial = (Config.FS_UPDATE_FRQ * 60000L) - initial; if ((Config.FS_MAX_OWN_TIME <= 0) || (getOwnedTime() < (Config.FS_MAX_OWN_TIME * 3600))) { - _FortUpdater[0] = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FortUpdater(this, clan, runCount, UpdaterType.PERIODIC_UPDATE), initial, Config.FS_UPDATE_FRQ * 60000L); // Schedule owner tasks to start running + _FortUpdater[0] = ThreadPoolManager.scheduleAtFixedRate(new FortUpdater(this, clan, runCount, UpdaterType.PERIODIC_UPDATE), initial, Config.FS_UPDATE_FRQ * 60000L); // Schedule owner tasks to start running if (Config.FS_MAX_OWN_TIME > 0) { - _FortUpdater[1] = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FortUpdater(this, clan, runCount, UpdaterType.MAX_OWN_TIME), 3600000, 3600000); // Schedule owner tasks to remove owener + _FortUpdater[1] = ThreadPoolManager.scheduleAtFixedRate(new FortUpdater(this, clan, runCount, UpdaterType.MAX_OWN_TIME), 3600000, 3600000); // Schedule owner tasks to remove owener } } else { - _FortUpdater[1] = ThreadPoolManager.getInstance().scheduleGeneral(new FortUpdater(this, clan, 0, UpdaterType.MAX_OWN_TIME), 60000); // Schedule owner tasks to remove owner + _FortUpdater[1] = ThreadPoolManager.schedule(new FortUpdater(this, clan, 0, UpdaterType.MAX_OWN_TIME), 60000); // Schedule owner tasks to remove owner } } else @@ -836,10 +836,10 @@ public final class Fort extends AbstractResidence { _FortUpdater[1].cancel(false); } - _FortUpdater[0] = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FortUpdater(this, clan, 0, UpdaterType.PERIODIC_UPDATE), Config.FS_UPDATE_FRQ * 60000L, Config.FS_UPDATE_FRQ * 60000L); // Schedule owner tasks to start running + _FortUpdater[0] = ThreadPoolManager.scheduleAtFixedRate(new FortUpdater(this, clan, 0, UpdaterType.PERIODIC_UPDATE), Config.FS_UPDATE_FRQ * 60000L, Config.FS_UPDATE_FRQ * 60000L); // Schedule owner tasks to start running if (Config.FS_MAX_OWN_TIME > 0) { - _FortUpdater[1] = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FortUpdater(this, clan, 0, UpdaterType.MAX_OWN_TIME), 3600000, 3600000); // Schedule owner tasks to remove owener + _FortUpdater[1] = ThreadPoolManager.scheduleAtFixedRate(new FortUpdater(this, clan, 0, UpdaterType.MAX_OWN_TIME), 3600000, 3600000); // Schedule owner tasks to remove owener } } else diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/FortSiege.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/FortSiege.java index c3c80f4589..840cacddb2 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/FortSiege.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/FortSiege.java @@ -111,7 +111,7 @@ public class FortSiege implements Siegable final SystemMessage sm; if (_time == 3600) // 1hr remains { - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(600), 3000000); // Prepare task for 10 minutes left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(600), 3000000); // Prepare task for 10 minutes left. } else if (_time == 600) // 10min remains { @@ -119,49 +119,49 @@ public class FortSiege implements Siegable sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(10); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(300), 300000); // Prepare task for 5 minutes left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(300), 300000); // Prepare task for 5 minutes left. } else if (_time == 300) // 5min remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(5); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(60), 240000); // Prepare task for 1 minute left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(60), 240000); // Prepare task for 1 minute left. } else if (_time == 60) // 1min remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(1); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(30), 30000); // Prepare task for 30 seconds left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(30), 30000); // Prepare task for 30 seconds left. } else if (_time == 30) // 30seconds remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_SECOND_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(30); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(10), 20000); // Prepare task for 10 seconds left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(10), 20000); // Prepare task for 10 seconds left. } else if (_time == 10) // 10seconds remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_SECOND_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(10); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(5), 5000); // Prepare task for 5 seconds left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(5), 5000); // Prepare task for 5 seconds left. } else if (_time == 5) // 5seconds remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_SECOND_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(5); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(1), 4000); // Prepare task for 1 seconds left. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(1), 4000); // Prepare task for 1 seconds left. } else if (_time == 1) // 1seconds remains { sm = SystemMessage.getSystemMessage(SystemMessageId.S1_SECOND_S_UNTIL_THE_FORTRESS_BATTLE_STARTS); sm.addInt(1); announceToPlayer(sm); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(0), 1000); // Prepare task start siege. + ThreadPoolManager.schedule(new ScheduleStartSiegeTask(0), 1000); // Prepare task start siege. } else if (_time == 0)// start siege { @@ -274,7 +274,7 @@ public class FortSiege implements Siegable unspawnSiegeGuard(); // Remove all spawned siege guard from this fort getFort().resetDoors(); // Respawn door to fort - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleSuspiciousMerchantSpawn(), FortSiegeManager.getInstance().getSuspiciousMerchantRespawnDelay() * 60 * 1000L); // Prepare 3hr task for suspicious merchant respawn + ThreadPoolManager.schedule(new ScheduleSuspiciousMerchantSpawn(), FortSiegeManager.getInstance().getSuspiciousMerchantRespawnDelay() * 60 * 1000L); // Prepare 3hr task for suspicious merchant respawn setSiegeDateTime(true); // store suspicious merchant spawn in DB if (_siegeEnd != null) @@ -336,7 +336,7 @@ public class FortSiege implements Siegable getFort().getZone().updateZoneStatusForCharactersInside(); // Schedule a task to prepare auto siege end - _siegeEnd = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(), FortSiegeManager.getInstance().getSiegeLength() * 60 * 1000L); // Prepare auto end task + _siegeEnd = ThreadPoolManager.schedule(new ScheduleEndSiegeTask(), FortSiegeManager.getInstance().getSiegeLength() * 60 * 1000L); // Prepare auto end task final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THE_FORTRESS_BATTLE_S1_HAS_BEGUN); sm.addCastleId(getFort().getResidenceId()); @@ -672,7 +672,7 @@ public class FortSiege implements Siegable else if (_siegeRestore == null) { getFort().getSiege().announceToPlayer(SystemMessage.getSystemMessage(SystemMessageId.THE_BARRACKS_HAVE_BEEN_SEIZED)); - _siegeRestore = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleSiegeRestore(), FortSiegeManager.getInstance().getCountDownLength() * 60 * 1000L); + _siegeRestore = ThreadPoolManager.schedule(new ScheduleSiegeRestore(), FortSiegeManager.getInstance().getCountDownLength() * 60 * 1000L); } else { @@ -830,7 +830,7 @@ public class FortSiege implements Siegable saveFortSiege(); clearSiegeClan(); // remove all clans // spawn suspicious merchant immediately - ThreadPoolManager.getInstance().executeGeneral(new ScheduleSuspiciousMerchantSpawn()); + ThreadPoolManager.execute(new ScheduleSuspiciousMerchantSpawn()); } else { @@ -838,33 +838,33 @@ public class FortSiege implements Siegable if (getAttackerClans().isEmpty()) { // no attackers - waiting for suspicious merchant spawn - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleSuspiciousMerchantSpawn(), delay); + ThreadPoolManager.schedule(new ScheduleSuspiciousMerchantSpawn(), delay); } else { // preparing start siege task if (delay > 3600000) // more than hour, how this can happens ? spawn suspicious merchant { - ThreadPoolManager.getInstance().executeGeneral(new ScheduleSuspiciousMerchantSpawn()); - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(3600), delay - 3600000); + ThreadPoolManager.execute(new ScheduleSuspiciousMerchantSpawn()); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(3600), delay - 3600000); } if (delay > 600000) // more than 10 min, spawn suspicious merchant { - ThreadPoolManager.getInstance().executeGeneral(new ScheduleSuspiciousMerchantSpawn()); - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(600), delay - 600000); + ThreadPoolManager.execute(new ScheduleSuspiciousMerchantSpawn()); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(600), delay - 600000); } else if (delay > 300000) { - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(300), delay - 300000); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(300), delay - 300000); } else if (delay > 60000) { - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(60), delay - 60000); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(60), delay - 60000); } else { // lower than 1 min, set to 1 min - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(60), 0); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(60), 0); } _log.info(getClass().getSimpleName() + ": Siege of " + getFort().getName() + " fort: " + getFort().getSiegeDate().getTime()); @@ -894,7 +894,7 @@ public class FortSiege implements Siegable } // Execute siege auto start - _siegeStartTask = ThreadPoolManager.getInstance().scheduleGeneral(new FortSiege.ScheduleStartSiegeTask(3600), 0); + _siegeStartTask = ThreadPoolManager.schedule(new FortSiege.ScheduleStartSiegeTask(3600), 0); } /** diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/Siege.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/Siege.java index a9ead559aa..4d1d933e3a 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/Siege.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/entity/Siege.java @@ -103,35 +103,35 @@ public class Siege implements Siegable final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_HOUR_S_UNTIL_CASTLE_SIEGE_CONCLUSION); sm.addInt(2); announceToPlayer(sm, true); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 3600000); // Prepare task for 1 hr left. + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 3600000); // Prepare task for 1 hr left. } else if ((timeRemaining <= 3600000) && (timeRemaining > 600000)) { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_CASTLE_SIEGE_CONCLUSION); sm.addInt((int) timeRemaining / 60000); announceToPlayer(sm, true); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 600000); // Prepare task for 10 minute left. + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 600000); // Prepare task for 10 minute left. } else if ((timeRemaining <= 600000) && (timeRemaining > 300000)) { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_CASTLE_SIEGE_CONCLUSION); sm.addInt((int) timeRemaining / 60000); announceToPlayer(sm, true); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 300000); // Prepare task for 5 minute left. + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 300000); // Prepare task for 5 minute left. } else if ((timeRemaining <= 300000) && (timeRemaining > 10000)) { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MINUTE_S_UNTIL_CASTLE_SIEGE_CONCLUSION); sm.addInt((int) timeRemaining / 60000); announceToPlayer(sm, true); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 10000); // Prepare task for 10 seconds count down + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(_castleInst), timeRemaining - 10000); // Prepare task for 10 seconds count down } else if ((timeRemaining <= 10000) && (timeRemaining > 0)) { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THIS_CASTLE_SIEGE_WILL_END_IN_S1_SECOND_S); sm.addInt((int) timeRemaining / 1000); announceToPlayer(sm, true); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(_castleInst), timeRemaining); // Prepare task for second count down + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(_castleInst), timeRemaining); // Prepare task for second count down } else { @@ -170,7 +170,7 @@ public class Siege implements Siegable final long regTimeRemaining = getTimeRegistrationOverDate().getTimeInMillis() - Calendar.getInstance().getTimeInMillis(); if (regTimeRemaining > 0) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), regTimeRemaining); + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), regTimeRemaining); return; } endTimeRegistration(true); @@ -179,7 +179,7 @@ public class Siege implements Siegable final long timeRemaining = getSiegeDate().getTimeInMillis() - Calendar.getInstance().getTimeInMillis(); if (timeRemaining > 86400000) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 86400000); // Prepare task for 24 before siege start to end registration + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 86400000); // Prepare task for 24 before siege start to end registration } else if ((timeRemaining <= 86400000) && (timeRemaining > 13600000)) { @@ -188,23 +188,23 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(sm); _isRegistrationOver = true; clearSiegeWaitingClan(); - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 13600000); // Prepare task for 1 hr left before siege start. + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 13600000); // Prepare task for 1 hr left before siege start. } else if ((timeRemaining <= 13600000) && (timeRemaining > 600000)) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 600000); // Prepare task for 10 minute left. + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 600000); // Prepare task for 10 minute left. } else if ((timeRemaining <= 600000) && (timeRemaining > 300000)) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 300000); // Prepare task for 5 minute left. + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 300000); // Prepare task for 5 minute left. } else if ((timeRemaining <= 300000) && (timeRemaining > 10000)) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 10000); // Prepare task for 10 seconds count down + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining - 10000); // Prepare task for 10 seconds count down } else if ((timeRemaining <= 10000) && (timeRemaining > 0)) { - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStartSiegeTask(_castleInst), timeRemaining); // Prepare task for second count down + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new ScheduleStartSiegeTask(_castleInst), timeRemaining); // Prepare task for second count down } else { @@ -523,7 +523,7 @@ public class Siege implements Siegable // Schedule a task to prepare auto siege end _siegeEndDate = Calendar.getInstance(); _siegeEndDate.add(Calendar.MINUTE, SiegeManager.getInstance().getSiegeLength()); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(getCastle()), 1000); // Prepare auto end task + ThreadPoolManager.schedule(new ScheduleEndSiegeTask(getCastle()), 1000); // Prepare auto end task final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THE_S1_SIEGE_HAS_STARTED); sm.addCastleId(getCastle().getResidenceId()); @@ -1095,7 +1095,7 @@ public class Siege implements Siegable { _scheduledStartSiegeTask.cancel(false); } - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new Siege.ScheduleStartSiegeTask(getCastle()), 1000); + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new Siege.ScheduleStartSiegeTask(getCastle()), 1000); } /** @@ -1413,7 +1413,7 @@ public class Siege implements Siegable if (_scheduledStartSiegeTask != null) { _scheduledStartSiegeTask.cancel(true); - _scheduledStartSiegeTask = ThreadPoolManager.getInstance().scheduleGeneral(new Siege.ScheduleStartSiegeTask(getCastle()), 1000); + _scheduledStartSiegeTask = ThreadPoolManager.schedule(new Siege.ScheduleStartSiegeTask(getCastle()), 1000); } try (Connection con = DatabaseFactory.getInstance().getConnection(); diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/eventengine/EventScheduler.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/eventengine/EventScheduler.java index fdc58c3301..8f25107013 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/eventengine/EventScheduler.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/eventengine/EventScheduler.java @@ -115,7 +115,7 @@ public class EventScheduler if (timeSchedule <= (30 * 1000)) { LOGGER.warning("Wrong reschedule for " + _eventManager.getClass().getSimpleName() + " end up run in " + (timeSchedule / 1000) + " seconds!"); - ThreadPoolManager.getInstance().scheduleEvent(this::startScheduler, timeSchedule + 1000); + ThreadPoolManager.schedule(this::startScheduler, timeSchedule + 1000); return; } @@ -124,14 +124,14 @@ public class EventScheduler _task.cancel(false); } - _task = ThreadPoolManager.getInstance().scheduleEvent(() -> + _task = ThreadPoolManager.schedule(() -> { run(); updateLastRun(); if (isRepeating()) { - ThreadPoolManager.getInstance().scheduleEvent(this::startScheduler, 1000); + ThreadPoolManager.schedule(this::startScheduler, 1000); } }, timeSchedule); } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/events/EventDispatcher.java index c7251bbe59..2e551991b6 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -17,7 +17,6 @@ package com.l2jmobius.gameserver.model.events; import java.util.Queue; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -116,7 +115,7 @@ public final class EventDispatcher if (hasListeners) { - ThreadPoolManager.getInstance().executeEvent(() -> notifyEventToMultipleContainers(event, containers, null)); + ThreadPoolManager.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } } @@ -130,22 +129,7 @@ public final class EventDispatcher { if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) { - ThreadPoolManager.getInstance().scheduleEvent(() -> notifyEvent(event, container, null), delay); - } - } - - /** - * Scheduling current listener notification asynchronously after specified delay. - * @param event - * @param container - * @param delay - * @param unit - */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay, TimeUnit unit) - { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) - { - ThreadPoolManager.getInstance().scheduleEvent(() -> notifyEvent(event, container, null), delay, unit); + ThreadPoolManager.schedule(() -> notifyEvent(event, container, null), delay); } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/events/timers/TimerHolder.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/events/timers/TimerHolder.java index 1a0961ed28..98bce44327 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/events/timers/TimerHolder.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/events/timers/TimerHolder.java @@ -58,7 +58,7 @@ public class TimerHolder implements Runnable _eventScript = eventScript; _cancelScript = cancelScript; _postExecutor = postExecutor; - _task = isRepeating ? ThreadPoolManager.getInstance().scheduleEventAtFixedRate(this, _time, _time) : ThreadPoolManager.getInstance().scheduleEvent(this, _time); + _task = isRepeating ? ThreadPoolManager.scheduleAtFixedRate(this, _time, _time) : ThreadPoolManager.schedule(this, _time); TimersManager.getInstance().registerTimer(this); } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/instancezone/Instance.java index c55257fc29..232944b028 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/instancezone/Instance.java @@ -290,7 +290,7 @@ public final class Instance implements IIdentifiable, INamable } else if ((emptyTime >= 0) && (_emptyDestroyTask == null) && (getRemainingTime() < emptyTime)) { - _emptyDestroyTask = ThreadPoolManager.getInstance().scheduleGeneral(this::destroy, emptyTime); + _emptyDestroyTask = ThreadPoolManager.schedule(this::destroy, emptyTime); } } } @@ -684,11 +684,11 @@ public final class Instance implements IIdentifiable, INamable sendWorldDestroyMessage(minutes); if (minutes <= 5) // Message 1 minute before destroy { - _cleanUpTask = ThreadPoolManager.getInstance().scheduleGeneral(this::cleanUp, millis - 60000); + _cleanUpTask = ThreadPoolManager.schedule(this::cleanUp, millis - 60000); } else // Message 5 minutes before destroy { - _cleanUpTask = ThreadPoolManager.getInstance().scheduleGeneral(this::cleanUp, millis - (5 * 60000)); + _cleanUpTask = ThreadPoolManager.schedule(this::cleanUp, millis - (5 * 60000)); } } } @@ -900,13 +900,13 @@ public final class Instance implements IIdentifiable, INamable player.sendPacket(sm); // Start eject task - _ejectDeadTasks.put(player.getObjectId(), ThreadPoolManager.getInstance().scheduleGeneral(() -> + _ejectDeadTasks.put(player.getObjectId(), ThreadPoolManager.schedule(() -> { if (player.isDead()) { ejectPlayer(player.getActingPlayer()); } - }, _template.getEjectTime(), TimeUnit.MINUTES)); + }, _template.getEjectTime() * 60 * 1000)); // minutes to milliseconds } /** @@ -1128,12 +1128,12 @@ public final class Instance implements IIdentifiable, INamable if (getRemainingTime() <= TimeUnit.MINUTES.toMillis(1)) { sendWorldDestroyMessage(1); - _cleanUpTask = ThreadPoolManager.getInstance().scheduleGeneral(this::destroy, 1, TimeUnit.MINUTES); + _cleanUpTask = ThreadPoolManager.schedule(this::destroy, 60 * 1000); // 1 minute } else { sendWorldDestroyMessage(5); - _cleanUpTask = ThreadPoolManager.getInstance().scheduleGeneral(this::cleanUp, 5, TimeUnit.MINUTES); + _cleanUpTask = ThreadPoolManager.schedule(this::cleanUp, 5 * 60 * 1000); // 5 minutes } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/itemauction/ItemAuction.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/itemauction/ItemAuction.java index caee88ddf3..aaab55dec7 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/itemauction/ItemAuction.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/itemauction/ItemAuction.java @@ -400,7 +400,7 @@ public final class ItemAuction public final void broadcastToAllBidders(IClientOutgoingPacket packet) { - ThreadPoolManager.getInstance().executeGeneral(() -> broadcastToAllBiddersInternal(packet)); + ThreadPoolManager.execute(() -> broadcastToAllBiddersInternal(packet)); } public final void broadcastToAllBiddersInternal(IClientOutgoingPacket packet) diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/itemauction/ItemAuctionInstance.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/itemauction/ItemAuctionInstance.java index 6b216c3ba4..544091dcd5 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/itemauction/ItemAuctionInstance.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/itemauction/ItemAuctionInstance.java @@ -331,17 +331,17 @@ public final class ItemAuctionInstance { if (currentAuction.getAuctionState() == ItemAuctionState.STARTED) { - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleAuctionTask(currentAuction), Math.max(currentAuction.getEndingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(new ScheduleAuctionTask(currentAuction), Math.max(currentAuction.getEndingTime() - System.currentTimeMillis(), 0L))); } else { - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleAuctionTask(currentAuction), Math.max(currentAuction.getStartingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(new ScheduleAuctionTask(currentAuction), Math.max(currentAuction.getStartingTime() - System.currentTimeMillis(), 0L))); } LOGGER.info(getClass().getSimpleName() + ": Schedule current auction " + currentAuction.getAuctionId() + " for instance " + _instanceId); } else { - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleAuctionTask(nextAuction), Math.max(nextAuction.getStartingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(new ScheduleAuctionTask(nextAuction), Math.max(nextAuction.getStartingTime() - System.currentTimeMillis(), 0L))); LOGGER.info(getClass().getSimpleName() + ": Schedule next auction " + nextAuction.getAuctionId() + " on " + DATE_FORMAT.format(new Date(nextAuction.getStartingTime())) + " for instance " + _instanceId); } } @@ -429,7 +429,7 @@ public final class ItemAuctionInstance if (_auction.getScheduledAuctionEndingExtendState() == ItemAuctionExtendState.INITIAL) { _auction.setScheduledAuctionEndingExtendState(ItemAuctionExtendState.EXTEND_BY_5_MIN); - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); return; } break; @@ -440,7 +440,7 @@ public final class ItemAuctionInstance if (_auction.getScheduledAuctionEndingExtendState() != ItemAuctionExtendState.EXTEND_BY_3_MIN) { _auction.setScheduledAuctionEndingExtendState(ItemAuctionExtendState.EXTEND_BY_3_MIN); - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); return; } break; @@ -451,7 +451,7 @@ public final class ItemAuctionInstance if (_auction.getScheduledAuctionEndingExtendState() != ItemAuctionExtendState.EXTEND_BY_CONFIG_PHASE_B) { _auction.setScheduledAuctionEndingExtendState(ItemAuctionExtendState.EXTEND_BY_CONFIG_PHASE_B); - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); return; } break; @@ -462,7 +462,7 @@ public final class ItemAuctionInstance if (_auction.getScheduledAuctionEndingExtendState() != ItemAuctionExtendState.EXTEND_BY_CONFIG_PHASE_A) { _auction.setScheduledAuctionEndingExtendState(ItemAuctionExtendState.EXTEND_BY_CONFIG_PHASE_A); - setStateTask(ThreadPoolManager.getInstance().scheduleGeneral(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); + setStateTask(ThreadPoolManager.schedule(this, Math.max(_auction.getEndingTime() - System.currentTimeMillis(), 0L))); return; } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/items/instance/L2ItemInstance.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/items/instance/L2ItemInstance.java index b8f458239e..af1054767c 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/items/instance/L2ItemInstance.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/items/instance/L2ItemInstance.java @@ -1412,7 +1412,7 @@ public final class L2ItemInstance extends L2Object return; } _consumingMana = true; - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleConsumeManaTask(this), MANA_CONSUMPTION_RATE); + ThreadPoolManager.schedule(new ScheduleConsumeManaTask(this), MANA_CONSUMPTION_RATE); } /** @@ -1545,7 +1545,7 @@ public final class L2ItemInstance extends L2Object public final void dropMe(L2Character dropper, int x, int y, int z) { - ThreadPoolManager.getInstance().executeGeneral(new ItemDropTask(this, dropper, x, y, z)); + ThreadPoolManager.execute(new ItemDropTask(this, dropper, x, y, z)); if ((dropper != null) && dropper.isPlayer()) { // Notify to scripts @@ -1833,7 +1833,7 @@ public final class L2ItemInstance extends L2Object { _lifeTimeTask.cancel(true); } - _lifeTimeTask = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleLifeTimeTask(this), getRemainingTime()); + _lifeTimeTask = ThreadPoolManager.schedule(new ScheduleLifeTimeTask(this), getRemainingTime()); } } @@ -2379,11 +2379,11 @@ public final class L2ItemInstance extends L2Object final long time = getVisualLifeTime() - System.currentTimeMillis(); if (time > 0) { - _appearanceLifeTimeTask = ThreadPoolManager.getInstance().scheduleGeneral(this::onVisualLifeTimeEnd, time); + _appearanceLifeTimeTask = ThreadPoolManager.schedule(this::onVisualLifeTimeEnd, time); } else { - ThreadPoolManager.getInstance().executeGeneral(this::onVisualLifeTimeEnd); + ThreadPoolManager.execute(this::onVisualLifeTimeEnd); } } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/olympiad/Olympiad.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/olympiad/Olympiad.java index b7f07cadea..edbb47633b 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/olympiad/Olympiad.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/olympiad/Olympiad.java @@ -200,7 +200,7 @@ public class Olympiad extends ListenersContainer if (_validationEnd > Calendar.getInstance().getTimeInMillis()) { loadNoblesRank(); - _scheduledValdationTask = ThreadPoolManager.getInstance().scheduleGeneral(new ValidationEndTask(), getMillisToValidationEnd()); + _scheduledValdationTask = ThreadPoolManager.schedule(new ValidationEndTask(), getMillisToValidationEnd()); } else { @@ -357,7 +357,7 @@ public class Olympiad extends ListenersContainer _scheduledOlympiadEnd.cancel(true); } - _scheduledOlympiadEnd = ThreadPoolManager.getInstance().scheduleGeneral(new OlympiadEndTask(), getMillisToOlympiadEnd()); + _scheduledOlympiadEnd = ThreadPoolManager.schedule(new OlympiadEndTask(), getMillisToOlympiadEnd()); updateCompStatus(); } @@ -391,7 +391,7 @@ public class Olympiad extends ListenersContainer _validationEnd = validationEnd.getTimeInMillis() + VALIDATION_PERIOD; loadNoblesRank(); - _scheduledValdationTask = ThreadPoolManager.getInstance().scheduleGeneral(new ValidationEndTask(), getMillisToValidationEnd()); + _scheduledValdationTask = ThreadPoolManager.schedule(new ValidationEndTask(), getMillisToValidationEnd()); } } @@ -439,7 +439,7 @@ public class Olympiad extends ListenersContainer LOGGER.info(getClass().getSimpleName() + ": Event starts/started: " + _compStart.getTime()); } - _scheduledCompStart = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _scheduledCompStart = ThreadPoolManager.schedule(() -> { if (isOlympiadEnd()) { @@ -452,19 +452,19 @@ public class Olympiad extends ListenersContainer LOGGER.info(getClass().getSimpleName() + ": Olympiad Games have started."); _logResults.info("Result,Player1,Player2,Player1 HP,Player2 HP,Player1 Damage,Player2 Damage,Points,Classed"); - _gameManager = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(OlympiadGameManager.getInstance(), 30000, 30000); + _gameManager = ThreadPoolManager.scheduleAtFixedRate(OlympiadGameManager.getInstance(), 30000, 30000); if (Config.ALT_OLY_ANNOUNCE_GAMES) { - _gameAnnouncer = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new OlympiadAnnouncer(), 30000, 500); + _gameAnnouncer = ThreadPoolManager.scheduleAtFixedRate(new OlympiadAnnouncer(), 30000, 500); } final long regEnd = getMillisToCompEnd() - 600000; if (regEnd > 0) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> Broadcast.toAllOnlinePlayers(SystemMessage.getSystemMessage(SystemMessageId.THE_OLYMPIAD_REGISTRATION_PERIOD_HAS_ENDED)), regEnd); + ThreadPoolManager.schedule(() -> Broadcast.toAllOnlinePlayers(SystemMessage.getSystemMessage(SystemMessageId.THE_OLYMPIAD_REGISTRATION_PERIOD_HAS_ENDED)), regEnd); } - _scheduledCompEnd = ThreadPoolManager.getInstance().scheduleGeneral(() -> + _scheduledCompEnd = ThreadPoolManager.schedule(() -> { if (isOlympiadEnd()) { @@ -519,7 +519,7 @@ public class Olympiad extends ListenersContainer _scheduledOlympiadEnd.cancel(true); } - _scheduledOlympiadEnd = ThreadPoolManager.getInstance().scheduleGeneral(new OlympiadEndTask(), 0); + _scheduledOlympiadEnd = ThreadPoolManager.schedule(new OlympiadEndTask(), 0); } protected long getMillisToValidationEnd() @@ -608,7 +608,7 @@ public class Olympiad extends ListenersContainer private void scheduleWeeklyChange() { - _scheduledWeeklyTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(() -> + _scheduledWeeklyTask = ThreadPoolManager.scheduleAtFixedRate(() -> { addWeeklyPoints(); LOGGER.info(getClass().getSimpleName() + ": Added weekly points to nobles"); diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java index d73f155193..f2425871a3 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java @@ -170,7 +170,7 @@ public final class OlympiadGameTask implements Runnable _game = game; _state = GameState.BEGIN; _needAnnounce = false; - ThreadPoolManager.getInstance().executeGeneral(this); + ThreadPoolManager.execute(this); } @Override @@ -341,7 +341,7 @@ public final class OlympiadGameTask implements Runnable return; } } - ThreadPoolManager.getInstance().scheduleGeneral(this, delay * 1000); + ThreadPoolManager.schedule(this, delay * 1000); } catch (Exception e) { @@ -361,7 +361,7 @@ public final class OlympiadGameTask implements Runnable _log.log(Level.WARNING, "Exception in " + _state + ", trying to port players back: " + e.getMessage(), e); _state = GameState.GAME_STOPPED; - ThreadPoolManager.getInstance().scheduleGeneral(this, 1000); + ThreadPoolManager.schedule(this, 1000); } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/punishment/PunishmentTask.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/punishment/PunishmentTask.java index 013c69f09a..bc8f5d0bc3 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/punishment/PunishmentTask.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/punishment/PunishmentTask.java @@ -147,7 +147,7 @@ public class PunishmentTask implements Runnable onStart(); if (_expirationTime > 0) // Has expiration? { - _task = ThreadPoolManager.getInstance().scheduleGeneral(this, (_expirationTime - System.currentTimeMillis())); + _task = ThreadPoolManager.schedule(this, (_expirationTime - System.currentTimeMillis())); } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/quest/LongTimeEvent.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/quest/LongTimeEvent.java index 0f19e40b4e..d197a06b7b 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/quest/LongTimeEvent.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/quest/LongTimeEvent.java @@ -91,7 +91,7 @@ public class LongTimeEvent extends Quest else if (_eventPeriod.getStartDate().after(new Date())) { final long delay = _eventPeriod.getStartDate().getTime() - System.currentTimeMillis(); - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleStart(), delay); + ThreadPoolManager.schedule(new ScheduleStart(), delay); _log.info("Event " + _eventName + " will be started at " + _eventPeriod.getEndDate()); } else @@ -301,7 +301,7 @@ public class LongTimeEvent extends Quest AnnouncementsTable.getInstance().addAnnouncement(new EventAnnouncement(_eventPeriod, _onEnterMsg)); // Schedule event end (now only for message sending) - ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEnd(), millisToEventEnd); + ThreadPoolManager.schedule(new ScheduleEnd(), millisToEventEnd); } /** diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/quest/QuestTimer.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/quest/QuestTimer.java index b468ad4c99..0eb81e0589 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/quest/QuestTimer.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/quest/QuestTimer.java @@ -68,7 +68,7 @@ public class QuestTimer _player = player; _npc = npc; _isRepeating = repeating; - _schedular = repeating ? ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new ScheduleTimerTask(), time, time) : ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleTimerTask(), time); + _schedular = repeating ? ThreadPoolManager.scheduleAtFixedRate(new ScheduleTimerTask(), time, time) : ThreadPoolManager.schedule(new ScheduleTimerTask(), time); } public QuestTimer(Quest quest, String name, long time, L2Npc npc, L2PcInstance player) diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/residences/ResidenceFunction.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/residences/ResidenceFunction.java index 6ebf0aba8e..9b93abc89c 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/residences/ResidenceFunction.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/residences/ResidenceFunction.java @@ -65,7 +65,7 @@ public class ResidenceFunction final ResidenceFunctionTemplate template = getTemplate(); if ((template != null) && (_expiration > System.currentTimeMillis())) { - _task = ThreadPoolManager.getInstance().scheduleGeneral(this::onFunctionExpiration, _expiration - System.currentTimeMillis()); + _task = ThreadPoolManager.schedule(this::onFunctionExpiration, _expiration - System.currentTimeMillis()); } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/shuttle/L2ShuttleEngine.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/shuttle/L2ShuttleEngine.java index 251b61c206..6fb07987fe 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/shuttle/L2ShuttleEngine.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/shuttle/L2ShuttleEngine.java @@ -64,7 +64,7 @@ public class L2ShuttleEngine implements Runnable _shuttle.openDoor(0); _shuttle.closeDoor(1); _shuttle.broadcastShuttleInfo(); - ThreadPoolManager.getInstance().scheduleGeneral(this, DELAY); + ThreadPoolManager.schedule(this, DELAY); break; } case 1: @@ -74,7 +74,7 @@ public class L2ShuttleEngine implements Runnable _shuttle.closeDoor(0); _shuttle.closeDoor(1); _shuttle.broadcastShuttleInfo(); - ThreadPoolManager.getInstance().scheduleGeneral(this, 1000); + ThreadPoolManager.schedule(this, 1000); break; } case 2: @@ -89,7 +89,7 @@ public class L2ShuttleEngine implements Runnable _shuttle.openDoor(1); _shuttle.closeDoor(0); _shuttle.broadcastShuttleInfo(); - ThreadPoolManager.getInstance().scheduleGeneral(this, DELAY); + ThreadPoolManager.schedule(this, DELAY); break; } case 4: @@ -99,7 +99,7 @@ public class L2ShuttleEngine implements Runnable _shuttle.closeDoor(0); _shuttle.closeDoor(1); _shuttle.broadcastShuttleInfo(); - ThreadPoolManager.getInstance().scheduleGeneral(this, 1000); + ThreadPoolManager.schedule(this, 1000); break; } case 5: diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/skills/BuffInfo.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/skills/BuffInfo.java index f77eb25b5c..83cb08e95d 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/skills/BuffInfo.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/skills/BuffInfo.java @@ -291,7 +291,7 @@ public final class BuffInfo // Creates a task that will stop all the effects. if (_abnormalTime > 0) { - _scheduledFutureTimeTask = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new BuffTimeTask(this), 0, 1000L); + _scheduledFutureTimeTask = ThreadPoolManager.scheduleAtFixedRate(new BuffTimeTask(this), 0, 1000L); } // Reset abnormal visual effects. @@ -313,7 +313,7 @@ public final class BuffInfo { // The task for the effect ticks. final EffectTickTask effectTask = new EffectTickTask(this, effect); - final ScheduledFuture scheduledFuture = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(effectTask, effect.getTicks() * Config.EFFECT_TICK_RATIO, effect.getTicks() * Config.EFFECT_TICK_RATIO); + final ScheduledFuture scheduledFuture = ThreadPoolManager.scheduleAtFixedRate(effectTask, effect.getTicks() * Config.EFFECT_TICK_RATIO, effect.getTicks() * Config.EFFECT_TICK_RATIO); // Adds the task for ticking. addTask(effect, new EffectTaskInfo(effectTask, scheduledFuture)); } @@ -448,7 +448,7 @@ public final class BuffInfo { _scheduledFutureTimeTask.cancel(true); } - _scheduledFutureTimeTask = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new BuffTimeTask(this), 0, 1000L); + _scheduledFutureTimeTask = ThreadPoolManager.scheduleAtFixedRate(new BuffTimeTask(this), 0, 1000L); } } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java index ec30530b46..9780892efe 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -211,7 +211,7 @@ public class SkillCaster implements Runnable // Reschedule next task if we have such. if (hasNextPhase) { - _task = ThreadPoolManager.getInstance().scheduleEffect(this, nextTaskDelay); + _task = ThreadPoolManager.schedule(this, nextTaskDelay); } else { @@ -650,7 +650,7 @@ public class SkillCaster implements Runnable if (queuedSkill != null) { - ThreadPoolManager.getInstance().executeGeneral(() -> + ThreadPoolManager.execute(() -> { currPlayer.setQueuedSkill(null, null, false, false); currPlayer.useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/skills/SkillChannelizer.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/skills/SkillChannelizer.java index 47cf19adfa..3875eb6830 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/skills/SkillChannelizer.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/skills/SkillChannelizer.java @@ -78,7 +78,7 @@ public class SkillChannelizer implements Runnable // Start channeling. _skill = skill; - _task = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this, skill.getChannelingTickInitialDelay(), skill.getChannelingTickInterval()); + _task = ThreadPoolManager.scheduleAtFixedRate(this, skill.getChannelingTickInitialDelay(), skill.getChannelingTickInterval()); } public void stopChanneling() diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/votereward/VoteSystem.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/votereward/VoteSystem.java index ee96ba2285..dd4d99799e 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/votereward/VoteSystem.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/votereward/VoteSystem.java @@ -108,7 +108,7 @@ public abstract class VoteSystem implements Runnable this.rewards = rewards; this.checkMins = checkMins; - ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this, checkMins * 1000 * 60, checkMins * 1000 * 60); + ThreadPoolManager.scheduleAtFixedRate(this, checkMins * 1000 * 60, checkMins * 1000 * 60); } protected void reward() diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2DamageZone.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2DamageZone.java index 4ba930be33..ab4c97288c 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2DamageZone.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2DamageZone.java @@ -121,7 +121,7 @@ public class L2DamageZone extends L2ZoneType { if (getSettings().getTask() == null) { - getSettings().setTask(ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new ApplyDamage(this), _startTask, _reuseTask)); + getSettings().setTask(ThreadPoolManager.scheduleAtFixedRate(new ApplyDamage(this), _startTask, _reuseTask)); } } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2EffectZone.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2EffectZone.java index 8faad5e583..53947b8169 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2EffectZone.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2EffectZone.java @@ -136,7 +136,7 @@ public final class L2EffectZone extends L2ZoneType { if (getSettings().getTask() == null) { - getSettings().setTask(ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new ApplySkill(), _initialDelay, _reuse)); + getSettings().setTask(ThreadPoolManager.scheduleAtFixedRate(new ApplySkill(), _initialDelay, _reuse)); } } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2FishingZone.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2FishingZone.java index d95e135c58..6814af7a3a 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2FishingZone.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2FishingZone.java @@ -47,7 +47,7 @@ public class L2FishingZone extends L2ZoneType if ((Config.ALLOW_FISHING || character.canOverrideCond(PcCondOverride.ZONE_CONDITIONS)) && !character.isInsideZone(ZoneId.FISHING)) { final WeakReference weakPlayer = new WeakReference<>(character.getActingPlayer()); - ThreadPoolManager.getInstance().executeGeneral(new Runnable() + ThreadPoolManager.execute(new Runnable() { @Override public void run() @@ -69,7 +69,7 @@ public class L2FishingZone extends L2ZoneType player.sendPacket(ExAutoFishAvailable.NO); } } - ThreadPoolManager.getInstance().scheduleGeneral(this, 1500); + ThreadPoolManager.schedule(this, 1500); } else { diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2JailZone.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2JailZone.java index 0b360f8bde..13e3744d6c 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2JailZone.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2JailZone.java @@ -77,7 +77,7 @@ public class L2JailZone extends L2ZoneType if (player.isJailed()) { // when a player wants to exit jail even if he is still jailed, teleport him back to jail - ThreadPoolManager.getInstance().scheduleGeneral(new TeleportTask(player, JAIL_IN_LOC), 2000); + ThreadPoolManager.schedule(new TeleportTask(player, JAIL_IN_LOC), 2000); character.sendMessage("You cannot cheat your way out of here. You must wait until your jail time is over."); } if (Config.JAIL_DISABLE_TRANSACTION) diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2OlympiadStadiumZone.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2OlympiadStadiumZone.java index 8209ddaf83..55f2f70d6b 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2OlympiadStadiumZone.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2OlympiadStadiumZone.java @@ -144,7 +144,7 @@ public class L2OlympiadStadiumZone extends L2ZoneRespawn // only participants, observers and GMs allowed if (!player.canOverrideCond(PcCondOverride.ZONE_CONDITIONS) && !player.isInOlympiadMode() && !player.inObserverMode()) { - ThreadPoolManager.getInstance().executeGeneral(new KickPlayer(player)); + ThreadPoolManager.execute(new KickPlayer(player)); } else { diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2ResidenceHallTeleportZone.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2ResidenceHallTeleportZone.java index 211ac52c18..063cd551e6 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2ResidenceHallTeleportZone.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2ResidenceHallTeleportZone.java @@ -62,7 +62,7 @@ public class L2ResidenceHallTeleportZone extends L2ResidenceTeleportZone { if ((_teleTask == null) || _teleTask.isDone()) { - _teleTask = ThreadPoolManager.getInstance().scheduleGeneral(new TeleportTask(), 30000); + _teleTask = ThreadPoolManager.schedule(new TeleportTask(), 30000); } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2SayuneZone.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2SayuneZone.java index f096d5eb89..0872062a68 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2SayuneZone.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/zone/type/L2SayuneZone.java @@ -59,7 +59,7 @@ public class L2SayuneZone extends L2ZoneType if (character.isPlayer() && (character.isInCategory(CategoryType.AWAKEN_GROUP) || Config.FREE_JUMPS_FOR_ALL) && !character.getActingPlayer().isMounted() && !character.isTransformed()) { character.setInsideZone(ZoneId.SAYUNE, true); - ThreadPoolManager.getInstance().executeGeneral(new FlyMoveStartTask(this, character.getActingPlayer())); + ThreadPoolManager.execute(new FlyMoveStartTask(this, character.getActingPlayer())); } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/network/L2GameClient.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/network/L2GameClient.java index b890cdc278..6bc536e28a 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/network/L2GameClient.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/network/L2GameClient.java @@ -113,7 +113,7 @@ public final class L2GameClient extends ChannelInboundHandler _crypt = new Crypt(this); if (Config.CHAR_DATA_STORE_INTERVAL > 0) { - _autoSaveInDB = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoSaveTask(), 300000L, Config.CHAR_DATA_STORE_INTERVAL); + _autoSaveInDB = ThreadPoolManager.scheduleAtFixedRate(new AutoSaveTask(), 300000L, Config.CHAR_DATA_STORE_INTERVAL); } else { @@ -146,7 +146,7 @@ public final class L2GameClient extends ChannelInboundHandler // no long running tasks here, do it async try { - ThreadPoolManager.getInstance().executeGeneral(new DisconnectTask()); + ThreadPoolManager.execute(new DisconnectTask()); } catch (RejectedExecutionException e) { @@ -652,7 +652,7 @@ public final class L2GameClient extends ChannelInboundHandler { cancelCleanup(); } - _cleanupTask = ThreadPoolManager.getInstance().scheduleGeneral(new CleanupTask(), 0); // instant + _cleanupTask = ThreadPoolManager.schedule(new CleanupTask(), 0); // instant } } @@ -802,7 +802,7 @@ public final class L2GameClient extends ChannelInboundHandler { if (_cleanupTask == null) { - _cleanupTask = ThreadPoolManager.getInstance().scheduleGeneral(new CleanupTask(), fast ? 5 : 15000L); + _cleanupTask = ThreadPoolManager.schedule(new CleanupTask(), fast ? 5 : 15000L); } } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index a807430d13..9edd6d2308 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -662,7 +662,7 @@ public class EnterWorld implements IClientIncomingPacket if (Config.HARDWARE_INFO_ENABLED) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { if (client.getHardwareInfo() == null) { diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/network/clientpackets/RequestPreviewItem.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/network/clientpackets/RequestPreviewItem.java index a6900f0102..c1db83f07e 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/network/clientpackets/RequestPreviewItem.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/network/clientpackets/RequestPreviewItem.java @@ -241,7 +241,7 @@ public final class RequestPreviewItem implements IClientIncomingPacket { activeChar.sendPacket(new ShopPreviewInfo(itemList)); // Schedule task - ThreadPoolManager.getInstance().scheduleGeneral(new RemoveWearItemsTask(activeChar), Config.WEAR_DELAY * 1000); + ThreadPoolManager.schedule(new RemoveWearItemsTask(activeChar), Config.WEAR_DELAY * 1000); } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index e7b3af4a35..6c7ebff02e 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -98,7 +98,7 @@ public final class RequestRestartPoint implements IClientIncomingPacket if ((activeChar.getClan() != null) && castle.getSiege().checkIsAttacker(activeChar.getClan())) { // Schedule respawn delay for attacker - ThreadPoolManager.getInstance().scheduleGeneral(new DeathTask(activeChar), castle.getSiege().getAttackerRespawnDelay()); + ThreadPoolManager.schedule(new DeathTask(activeChar), castle.getSiege().getAttackerRespawnDelay()); if (castle.getSiege().getAttackerRespawnDelay() > 0) { activeChar.sendMessage("You will be re-spawned in " + (castle.getSiege().getAttackerRespawnDelay() / 1000) + " seconds"); diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/network/clientpackets/UseItem.java index 7d80202cca..d6412dc382 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -246,7 +246,7 @@ public final class UseItem implements IClientIncomingPacket } else if (activeChar.isAttackingNow()) { - ThreadPoolManager.getInstance().scheduleGeneral(() -> + ThreadPoolManager.schedule(() -> { // If character is still engaged in strike we should not change weapon if (activeChar.isAttackingNow()) diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/taskmanager/AttackStanceTaskManager.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/taskmanager/AttackStanceTaskManager.java index 6e059c1112..9612f78257 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/taskmanager/AttackStanceTaskManager.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/taskmanager/AttackStanceTaskManager.java @@ -43,7 +43,7 @@ public class AttackStanceTaskManager */ protected AttackStanceTaskManager() { - ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new FightModeScheduler(), 0, 1000); + ThreadPoolManager.scheduleAtFixedRate(new FightModeScheduler(), 0, 1000); } /** diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/taskmanager/TaskManager.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/taskmanager/TaskManager.java index 44879f7839..5d9816577a 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/taskmanager/TaskManager.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/taskmanager/TaskManager.java @@ -223,31 +223,37 @@ public final class TaskManager private boolean launchTask(ExecutedTask task) { - final ThreadPoolManager scheduler = ThreadPoolManager.getInstance(); final TaskTypes type = task.getType(); long delay, interval; switch (type) { case TYPE_STARTUP: + { task.run(); return false; + } case TYPE_SHEDULED: + { delay = Long.valueOf(task.getParams()[0]); - task.scheduled = scheduler.scheduleGeneral(task, delay); + task.scheduled = ThreadPoolManager.schedule(task, delay); return true; + } case TYPE_FIXED_SHEDULED: + { delay = Long.valueOf(task.getParams()[0]); interval = Long.valueOf(task.getParams()[1]); - task.scheduled = scheduler.scheduleGeneralAtFixedRate(task, delay, interval); + task.scheduled = ThreadPoolManager.scheduleAtFixedRate(task, delay, interval); return true; + } case TYPE_TIME: + { try { final Date desired = DateFormat.getInstance().parse(task.getParams()[0]); final long diff = desired.getTime() - System.currentTimeMillis(); if (diff >= 0) { - task.scheduled = scheduler.scheduleGeneral(task, diff); + task.scheduled = ThreadPoolManager.schedule(task, diff); return true; } LOGGER.info("Task " + task.getId() + " is obsoleted."); @@ -256,7 +262,9 @@ public final class TaskManager { } break; + } case TYPE_SPECIAL: + { final ScheduledFuture result = task.getTask().launchSpecial(task); if (result != null) { @@ -264,7 +272,9 @@ public final class TaskManager return true; } break; + } case TYPE_GLOBAL_TASK: + { interval = Long.valueOf(task.getParams()[0]) * 86400000L; final String[] hour = task.getParams()[1].split(":"); @@ -296,10 +306,13 @@ public final class TaskManager { delay += interval; } - task.scheduled = scheduler.scheduleGeneralAtFixedRate(task, delay, interval); + task.scheduled = ThreadPoolManager.scheduleAtFixedRate(task, delay, interval); return true; + } default: + { return false; + } } return false; } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/util/Evolve.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/util/Evolve.java index c01bee7451..101903e150 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/util/Evolve.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/util/Evolve.java @@ -144,11 +144,11 @@ public final class Evolve petSummon.startFeed(); item.setEnchantLevel(petSummon.getLevel()); - ThreadPoolManager.getInstance().scheduleGeneral(new EvolveFinalizer(player, petSummon), 900); + ThreadPoolManager.schedule(new EvolveFinalizer(player, petSummon), 900); if (petSummon.getCurrentFed() <= 0) { - ThreadPoolManager.getInstance().scheduleGeneral(new EvolveFeedWait(player, petSummon), 60000); + ThreadPoolManager.schedule(new EvolveFeedWait(player, petSummon), 60000); } else { @@ -242,11 +242,11 @@ public final class Evolve final L2World world = L2World.getInstance(); world.removeObject(removedItem); - ThreadPoolManager.getInstance().scheduleGeneral(new EvolveFinalizer(player, petSummon), 900); + ThreadPoolManager.schedule(new EvolveFinalizer(player, petSummon), 900); if (petSummon.getCurrentFed() <= 0) { - ThreadPoolManager.getInstance().scheduleGeneral(new EvolveFeedWait(player, petSummon), 60000); + ThreadPoolManager.schedule(new EvolveFeedWait(player, petSummon), 60000); } else { diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/util/MinionList.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/util/MinionList.java index 10bebbe63e..22ba27c49f 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/util/MinionList.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/util/MinionList.java @@ -190,7 +190,7 @@ public class MinionList final int time = respawnTime < 0 ? _master.isRaid() ? (int) Config.RAID_MINION_RESPAWN_TIMER : 0 : respawnTime; if ((time > 0) && !_master.isAlikeDead()) { - ThreadPoolManager.getInstance().scheduleGeneral(new MinionRespawnTask(minion), time); + ThreadPoolManager.schedule(new MinionRespawnTask(minion), time); } } diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/util/Util.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/util/Util.java index 3795e02b4d..e551224ab8 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/util/Util.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/util/Util.java @@ -60,7 +60,7 @@ public final class Util public static void handleIllegalPlayerAction(L2PcInstance actor, String message, IllegalActionPunishmentType punishment) { - ThreadPoolManager.getInstance().scheduleGeneral(new IllegalPlayerActionTask(actor, message, punishment), 5000); + ThreadPoolManager.schedule(new IllegalPlayerActionTask(actor, message, punishment), 5000); } /**