Index: C:/workspace/C4-Alpha/java/net/sf/l2j/status/GameStatusThread.java
===================================================================
--- C:/workspace/C4-Alpha/java/net/sf/l2j/status/GameStatusThread.java (revision 1580)
+++ C:/workspace/C4-Alpha/java/net/sf/l2j/status/GameStatusThread.java (working copy)
@@ -255,6 +255,14 @@
}
_print.flush();
}
+ else if (_usrCommand.equals("extended_performance") || _usrCommand.equals("extended") )
+ {
+ for (String line : ClientScheduler.getInstance().getExtendedStats())
+ {
+ _print.println(line);
+ }
+ _print.flush();
+ }
else if (_usrCommand.startsWith("announce"))
{
try
Index: C:/workspace/C4-Alpha/java/net/sf/l2j/Config.java
===================================================================
--- C:/workspace/C4-Alpha/java/net/sf/l2j/Config.java (revision 1580)
+++ C:/workspace/C4-Alpha/java/net/sf/l2j/Config.java (working copy)
@@ -75,6 +75,16 @@
public static int THREAD_P_MED;
public static int THREAD_P_LOW;
+ /** Thread pools size - new method */
+ public static int THREAD_P_SYSTEM;
+ public static int THREAD_P_POTION;
+ public static int THREAD_P_SKILL;
+ public static int THREAD_P_AI;
+ public static int THREAD_P_SIEGEAI;
+ public static int THREAD_P_CRAFT;
+ public static int THREAD_P_QUEST;
+ public static int THREAD_P_OTHER;
+
/** Auto-loot? */
public static boolean AUTO_LOOT;
@@ -408,7 +418,16 @@
public static int EXECUTOR_PRI_MED;
public static int EXECUTOR_PRI_HIGH;
+ public static int EXECUTOR_PRI_SYSTEM;
+ public static int EXECUTOR_PRI_POTION;
+ public static int EXECUTOR_PRI_SKILL;
+ public static int EXECUTOR_PRI_AI;
+ public static int EXECUTOR_PRI_SIEGEAI;
+ public static int EXECUTOR_PRI_CRAFT;
+ public static int EXECUTOR_PRI_QUEST;
+ public static int EXECUTOR_PRI_OTHER;
+
public static enum IdFactoryType
{
Compaction,
@@ -633,6 +652,15 @@
THREAD_P_HIGH = Integer.parseInt(serverSettings.getProperty("ThreadPoolSizeHigh", "4"));
THREAD_P_MED = Integer.parseInt(serverSettings.getProperty("ThreadPoolSizeMed", "10"));
THREAD_P_LOW = Integer.parseInt(serverSettings.getProperty("ThreadPoolSizeLow", "4"));
+
+ THREAD_P_SYSTEM = Integer.parseInt(serverSettings.getProperty("ThreadPoolSizeSystem", "4"));
+ THREAD_P_POTION = Integer.parseInt(serverSettings.getProperty("ThreadPoolSizePotion", "4"));
+ THREAD_P_SKILL = Integer.parseInt(serverSettings.getProperty("ThreadPoolSizeSkill", "4"));
+ THREAD_P_AI = Integer.parseInt(serverSettings.getProperty("ThreadPoolSizeAi", "4"));
+ THREAD_P_SIEGEAI = Integer.parseInt(serverSettings.getProperty("ThreadPoolSizeSiegeAi", "4"));
+ THREAD_P_CRAFT = Integer.parseInt(serverSettings.getProperty("ThreadPoolSizeCraft", "4"));
+ THREAD_P_QUEST = Integer.parseInt(serverSettings.getProperty("ThreadPoolSizeQuest", "4"));
+ THREAD_P_OTHER = Integer.parseInt(serverSettings.getProperty("ThreadPoolSizeOther", "4"));
MAXIMUM_ONLINE_USERS = Integer.parseInt(serverSettings.getProperty("MaximumOnlineUsers", "100"));
@@ -666,7 +694,17 @@
EXECUTOR_PRI_LOW = Integer.parseInt(serverSettings.getProperty("ExecutorPriLow", "-1"));
EXECUTOR_PRI_MED = Integer.parseInt(serverSettings.getProperty("ExecutorPriMed", "0"));
EXECUTOR_PRI_HIGH = Integer.parseInt(serverSettings.getProperty("ExecutorPriHigh", "1"));
+
+ EXECUTOR_PRI_SYSTEM = Integer.parseInt(serverSettings.getProperty("ExecutorPriSystem", "1"));
+ EXECUTOR_PRI_POTION = Integer.parseInt(serverSettings.getProperty("ExecutorPriPotion", "-1"));
+ EXECUTOR_PRI_SKILL = Integer.parseInt(serverSettings.getProperty("ExecutorPriSkill", "-1"));
+ EXECUTOR_PRI_AI = Integer.parseInt(serverSettings.getProperty("ExecutorPriAi", "0"));
+ EXECUTOR_PRI_SIEGEAI = Integer.parseInt(serverSettings.getProperty("ExecutorPriSiegeAi", "0"));
+ EXECUTOR_PRI_CRAFT = Integer.parseInt(serverSettings.getProperty("ExecutorPriCraft", "-1"));
+ EXECUTOR_PRI_QUEST = Integer.parseInt(serverSettings.getProperty("ExecutorPriQuest", "-1"));
+ EXECUTOR_PRI_OTHER = Integer.parseInt(serverSettings.getProperty("ExecutorPriOther", "0"));
+
DEFAULT_PUNISH = Integer.parseInt(serverSettings.getProperty("DefaultPunish", "2"));
BYPASS_VALIDATION = Boolean.valueOf(serverSettings.getProperty("BypassValidation", "False"));
}
Index: C:/workspace/C4-Alpha/java/net/sf/l2j/loginserver/ClientThread.java
===================================================================
--- C:/workspace/C4-Alpha/java/net/sf/l2j/loginserver/ClientThread.java (revision 1580)
+++ C:/workspace/C4-Alpha/java/net/sf/l2j/loginserver/ClientThread.java (working copy)
@@ -413,7 +413,7 @@
_bannedIPs.add(ip);
int time = incorrectCount * incorrectCount * 1000;
//System.out.println("Banning ip "+ip+" for "+time/1000.0+" seconds.");
- ClientScheduler.getInstance().scheduleMed(new UnbanTask(ip), time);
+ ClientScheduler.getInstance().scheduleSystem(new UnbanTask(ip), time);
}
public static void addBannedIP(String ip)
Index: C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/Connection.java
===================================================================
--- C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/Connection.java (revision 1580)
+++ C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/Connection.java (working copy)
@@ -90,16 +90,8 @@
public synchronized void addReceivedMsg(ByteBuffer buf) {
if (Config.ASSERT) assert Thread.currentThread() == SelectorThread.instance;
ClientBasePacket pkt = PacketHandler.handlePacket(buf, _client);
- if (pkt != null) {
- if (pkt.getPriority() == TaskPriority.PR_URGENT)
- {
- pkt.run();
- }
- else
- {
+ if (pkt != null)
ClientScheduler.addReceivedMsg(pkt);
- }
- }
}
/** Get next message, received received by NIO's thread, if any.
Index: C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/clientpackets/RequestRestartPoint.java
===================================================================
--- C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/clientpackets/RequestRestartPoint.java (revision 1580)
+++ C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/clientpackets/RequestRestartPoint.java (working copy)
@@ -119,25 +119,24 @@
&& castle.getSiege().checkIsAttacker(activeChar.getClan()))
{
// Schedule respawn delay for attacker
- ClientScheduler.getInstance().scheduleLow(new DeathTask(activeChar), castle.getSiege().getAttackerRespawnDelay());
+ ClientScheduler.getInstance().scheduleSiegeAi(new DeathTask(activeChar), castle.getSiege().getAttackerRespawnDelay());
sm.addString("You will be re-spawned in " + castle.getSiege().getAttackerRespawnDelay()/1000 + " seconds");
activeChar.sendPacket(sm);
}
else
{
// Schedule respawn delay for defender with penalty for CT lose
- ClientScheduler.getInstance().scheduleLow(new DeathTask(activeChar), castle.getSiege().getDefenderRespawnDelay());
+ ClientScheduler.getInstance().scheduleSiegeAi(new DeathTask(activeChar), castle.getSiege().getDefenderRespawnDelay());
sm.addString("You will be re-spawned in " + castle.getSiege().getDefenderRespawnDelay()/1000 + " seconds");
activeChar.sendPacket(sm);
}
return;
}
- ClientScheduler.getInstance().scheduleLow(new DeathTask(activeChar), 1);
+ ClientScheduler.getInstance().scheduleSiegeAi(new DeathTask(activeChar), 1);
}
+
-
-
/* (non-Javadoc)
* @see net.sf.l2j.gameserver.clientpackets.ClientBasePacket#getType()
*/
Index: C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/SevenSignsFestival.java
===================================================================
--- C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/SevenSignsFestival.java (revision 1580)
+++ C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/SevenSignsFestival.java (working copy)
@@ -964,7 +964,7 @@
// at the specified time, then invoke it automatically after every cycle.
FestivalManager fm = new FestivalManager();
setNextFestivalStart(FESTIVAL_MANAGER_START + FESTIVAL_SIGNUP_TIME);
- _managerScheduledTask = ClientScheduler.getInstance().scheduleMedAtFixedRate(fm, FESTIVAL_MANAGER_START, FESTIVAL_CYCLE_LENGTH);
+ _managerScheduledTask = ClientScheduler.getInstance().scheduleOtherAtFixedRate(fm, FESTIVAL_MANAGER_START, FESTIVAL_CYCLE_LENGTH);
_log.info("SevenSignsFestival: The first Festival of Darkness cycle begins in " + (FESTIVAL_MANAGER_START / 1000 / 60) + " minute(s).");
}
Index: C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/ItemsAutoDestroy.java
===================================================================
--- C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/ItemsAutoDestroy.java (revision 1580)
+++ C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/ItemsAutoDestroy.java (working copy)
@@ -38,7 +38,7 @@
_sleep = Config.AUTODESTROY_ITEM_AFTER * 1000;
if(_sleep == 0) // it should not happend as it is not called when AUTODESTROY_ITEM_AFTER = 0 but we never know..
_sleep = 3600 * 1000;
- ClientScheduler.getInstance().scheduleMedAtFixedRate(new CheckItemsForDestroy(),_sleep,_sleep);
+ ClientScheduler.getInstance().scheduleOtherAtFixedRate(new CheckItemsForDestroy(),_sleep,_sleep);
}
public static ItemsAutoDestroy getInstance()
Index: C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/handler/itemhandlers/ScrollOfEscape.java
===================================================================
--- C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/handler/itemhandlers/ScrollOfEscape.java (revision 1580)
+++ C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/handler/itemhandlers/ScrollOfEscape.java (working copy)
@@ -86,7 +86,7 @@
activeChar.removeItemFromInventory(item, 1);
EscapeFinalizer ef = new EscapeFinalizer(activeChar, item.getItemId());
// continue execution later
- activeChar.setSkillCast(ClientScheduler.getInstance().scheduleLow(ef, skill.getSkillTime()));
+ activeChar.setSkillCast(ClientScheduler.getInstance().scheduleSkill(ef, skill.getSkillTime()));
activeChar.setSkillCastEndTime(10+GameTimeController.getGameTicks()+skill.getSkillTime()/GameTimeController.MILLIS_IN_TICK);
}
Index: C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/handler/itemhandlers/MysteryPotion.java
===================================================================
--- C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/handler/itemhandlers/MysteryPotion.java (revision 1580)
+++ C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/handler/itemhandlers/MysteryPotion.java (working copy)
@@ -59,7 +59,7 @@
activeChar.sendPacket(sm);
MysteryPotionStop mp = new MysteryPotionStop(playable);
- ClientScheduler.getInstance().scheduleLow(mp, _effectDuration);
+ ClientScheduler.getInstance().schedulePotion(mp, _effectDuration);
}
public class MysteryPotionStop implements Runnable
Index: C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/handler/itemhandlers/SoulCrystals.java
===================================================================
--- C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/handler/itemhandlers/SoulCrystals.java (revision 1580)
+++ C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/handler/itemhandlers/SoulCrystals.java (working copy)
@@ -85,7 +85,7 @@
// Continue execution later
CrystalFinalizer cf = new CrystalFinalizer(activeChar, target, crystalId);
- ClientScheduler.getInstance().scheduleLow(cf, skill.getSkillTime());
+ ClientScheduler.getInstance().scheduleSkill(cf, skill.getSkillTime());
}
Index: C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/handler/itemhandlers/PetSummon.java
===================================================================
--- C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/handler/itemhandlers/PetSummon.java (revision 1580)
+++ C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/handler/itemhandlers/PetSummon.java (working copy)
@@ -158,7 +158,7 @@
newpet.startFeed();
// continue execution in 1 seconds
- ClientScheduler.getInstance().scheduleLow(new SummonFinalizer(activeChar, newpet), 900);
+ ClientScheduler.getInstance().scheduleOther(new SummonFinalizer(activeChar, newpet), 900);
}
static class SummonFinalizer implements Runnable
Index: C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/handler/itemhandlers/ScrollOfResurrection.java
===================================================================
--- C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/handler/itemhandlers/ScrollOfResurrection.java (revision 1580)
+++ C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/handler/itemhandlers/ScrollOfResurrection.java (working copy)
@@ -139,7 +139,7 @@
activeChar.removeItemFromInventory(item, 1);
//ResurrectFinalizer rf = new ResurrectFinalizer(target);
// continue execution later
- //ClientScheduler.getInstance().scheduleLow(rf, skill.getSkillTime() - 200);
+ //ClientScheduler.getInstance().scheduleSkill(rf, skill.getSkillTime() - 200);
}
}
}
Index: C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/handler/usercommandhandlers/Escape.java
===================================================================
--- C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/handler/usercommandhandlers/Escape.java (revision 1580)
+++ C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/handler/usercommandhandlers/Escape.java (working copy)
@@ -64,7 +64,7 @@
EscapeFinalizer ef = new EscapeFinalizer(activeChar);
// continue execution later
- ClientScheduler.getInstance().scheduleLow(ef, unstuckTimer);
+ ClientScheduler.getInstance().scheduleOther(ef, unstuckTimer);
return true;
}
Index: C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminMonsterRace.java
===================================================================
--- C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminMonsterRace.java (revision 1580)
+++ C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminMonsterRace.java (working copy)
@@ -114,7 +114,7 @@
activeChar.sendPacket(spk);
activeChar.broadcastPacket(spk);
- ClientScheduler.getInstance().scheduleMed(new RunRace(codes, activeChar), 5000);
+ ClientScheduler.getInstance().scheduleOther(new RunRace(codes, activeChar), 5000);
}
}
@@ -151,7 +151,7 @@
MonRaceInfo spk = new MonRaceInfo(codes[2][0], codes[2][1], MonsterRace.getInstance().getMonsters(), MonsterRace.getInstance().getSpeeds());
activeChar.sendPacket(spk);
activeChar.broadcastPacket(spk);
- ClientScheduler.getInstance().scheduleMed(new RunEnd(activeChar), 30000);
+ ClientScheduler.getInstance().scheduleOther(new RunEnd(activeChar), 30000);
}
}
Index: C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminTest.java
===================================================================
--- C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminTest.java (revision 1580)
+++ C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminTest.java (working copy)
@@ -70,10 +70,23 @@
if (command.equals("admin_stats"))
{
- for (String line : ClientScheduler.getInstance().getStats())
+
+ activeChar.sendMessage("Stats:");
+ activeChar.sendMessage("");
+ for (String line : ClientScheduler.getInstance().getStats())
{
activeChar.sendMessage(line);
}
+
+ activeChar.sendMessage("");
+ activeChar.sendMessage("Extended stats:");
+ activeChar.sendMessage("");
+
+ for (String line : ClientScheduler.getInstance().getExtendedStats())
+ {
+ activeChar.sendMessage(line);
+ }
+
}
else if (command.startsWith("admin_skill_test") || command.startsWith("admin_st"))
{
Index: C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/GameServer.java
===================================================================
--- C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/GameServer.java (revision 1580)
+++ C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/GameServer.java (working copy)
@@ -204,7 +204,7 @@
throw new Exception("Could not initialize the ID factory");
}
- ClientScheduler.getInstance();
+ ClientScheduler.getInstance(); // we don't need singleton in this case but still would be nice to keep
new File(Config.DATAPACK_ROOT, "data/clans").mkdirs();
new File(Config.DATAPACK_ROOT, "data/crests").mkdirs();
Index: C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/idfactory/BitSetIDFactory.java
===================================================================
--- C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/idfactory/BitSetIDFactory.java (revision 1580)
+++ C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/idfactory/BitSetIDFactory.java (working copy)
@@ -69,7 +69,7 @@
protected BitSetIDFactory()
{
super();
- ClientScheduler.getInstance().scheduleAtFixedRate(new BitSetCapacityCheck(), TaskPriority.PR_LOW, 30000, 30000);
+ ClientScheduler.getInstance().scheduleSystemAtFixedRate(new BitSetCapacityCheck(), 30000, 30000);
initialize();
_log.info("IDFactory: "+ freeIds.size() + " id's avaliable.");
}
Index: C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/ai/L2AttackableAI.java
===================================================================
--- C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/ai/L2AttackableAI.java (revision 1580)
+++ C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/ai/L2AttackableAI.java (working copy)
@@ -242,7 +242,7 @@
// If not idle - create an AI task (schedule onEvtThink repeatedly)
if (aiTask == null)
{
- aiTask = ClientScheduler.getInstance().scheduleLowAtFixedRate(this, 1000, 1000);
+ aiTask = ClientScheduler.getInstance().scheduleAiAtFixedRate(this, 1000, 1000);
}
}
Index: C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/ai/L2SiegeGuardAI.java
===================================================================
--- C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/ai/L2SiegeGuardAI.java (revision 1580)
+++ C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/ai/L2SiegeGuardAI.java (working copy)
@@ -195,7 +195,7 @@
// If not idle - create an AI task (schedule onEvtThink repeatedly)
if (aiTask == null)
{
- aiTask = ClientScheduler.getInstance().scheduleLowAtFixedRate(this, 1000, 1000);
+ aiTask = ClientScheduler.getInstance().scheduleAiAtFixedRate(this, 1000, 1000);
}
}
Index: C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/ai/AbstractAI.java
===================================================================
--- C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/ai/AbstractAI.java (revision 1580)
+++ C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/ai/AbstractAI.java (working copy)
@@ -740,7 +740,7 @@
// Create and Launch an AI Follow Task to execute every 1s
_follow_target = target;
- _follow_task = ClientScheduler.getInstance().scheduleMedAtFixedRate(new FollowTask(), 5, FOLLOW_INTERVAL);
+ _follow_task = ClientScheduler.getInstance().scheduleAiAtFixedRate(new FollowTask(), 5, FOLLOW_INTERVAL);
}
/**
@@ -758,7 +758,7 @@
}
_follow_target = target;
- _follow_task = ClientScheduler.getInstance().scheduleMedAtFixedRate(new FollowTask(range), 5, ATTACK_FOLLOW_INTERVAL);
+ _follow_task = ClientScheduler.getInstance().scheduleAiAtFixedRate(new FollowTask(range), 5, ATTACK_FOLLOW_INTERVAL);
}
/**
Index: C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/RecipeController.java
===================================================================
--- C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/RecipeController.java (revision 1581)
+++ C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/RecipeController.java (working copy)
@@ -524,7 +524,7 @@
manufacturer.isInCraftMode(true); // here we say craf mode started, no reason to do it sooner, just makes problems
- //ClientScheduler.scheduleCraftAction(this, 100);
+ //ClientScheduler.getInstance().scheduleCraft(this, 100);
run(); // for not-alternative crafting -> no reason why not craft immediately, cause it uses really little cpu
// and will never make lag ... scheduled things tend to make lag, things that are immediately done don't if you
// have sufficient cpu anyway ... how long can craft take ? few nanoseconds ?
@@ -633,7 +633,7 @@
manufacturer.isInCraftMode(false);
activeMakers.remove(manufacturer);
} else
- ClientScheduler.scheduleEvent(this, 1+delay); // Craft thread pool has nothing to do with other pools, so
+ ClientScheduler.getInstance().scheduleCraft(this, 1+delay); // Craft thread pool has nothing to do with other pools, so
// only way this can make any kind of lag is when CPU usage is 100%
// when nobody is "in craft mode" scheduled tasks for
// craft thread pool must be 0 or we have a bug again :/
Index: C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/ClientScheduler.java
===================================================================
--- C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/ClientScheduler.java (revision 1580)
+++ C:/workspace/C4-Alpha/java/net/sf/l2j/gameserver/ClientScheduler.java (working copy)
@@ -1,3 +1,18 @@
+/*
+ * Temporary note:
+ * we need different types of thread pools:
+ *
+ * - system (all more important threads)
+ * - potions
+ * - buffs
+ * - ai
+ * - siege ai
+ * - craft
+ * - quest
+ * - other
+ *
+ */
+
/*
* 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
@@ -31,20 +46,10 @@
import net.sf.l2j.Config;
import net.sf.l2j.gameserver.clientpackets.ClientBasePacket;
-/**
- * This class permit to create 3 Threads pools and to add to it tasks to execute in function of their priority (HIGH, MEDIUM,LOW).
- *
- * Threads pools :
- *