ThreadPool manager rework.

This commit is contained in:
MobiusDev
2017-08-23 05:23:31 +00:00
parent 374c53df4b
commit b77de360af
718 changed files with 3180 additions and 7193 deletions

View File

@@ -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);
}
}

View File

@@ -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!");