@@ -141,6 +141,11 @@ public class ThreadPoolManager
}
+ public boolean removeEffect(Runnable r)
+ {
+ return _effectsScheduledThreadPool.remove(r);
+ }
+
public ScheduledFuture<?> scheduleGeneral(Runnable r, long delay)
{
try
@@ -420,8 +420,12 @@ public abstract class L2Effect
if (_currentFuture != null)
- // Cancel the task
- _currentFuture.cancel(false);
+ synchronized (_currentFuture)
+ // Cancel the task
+ _currentFuture.cancel(false);
+ ThreadPoolManager.getInstance().removeEffect(_currentTask);
_currentFuture = null;
_currentTask = null;