@Override public void onDisable() { thread.interrupt(); callbackManager.exit(); if (mainThreadExecutor != null) mainThreadExecutor.exit(); thread = null; runningWorkers.remove(getClass()); }
private void run() { WorkerRunnable currentRunnable; while (!Thread.interrupted()) { synchronized (runQueue) { try { while (runQueue.isEmpty()) runQueue.wait(); } catch (InterruptedException ex) { break; } currentRunnable = runQueue.pop(); } try { callbackManager.callback(currentRunnable, currentRunnable.run()); } catch (Throwable ex) { callbackManager.callback(currentRunnable, null, ex); } runnables.remove(currentRunnable.getClass()); } }
@Override public void onEnable() { if (thread != null && thread.isAlive()) { PluginLogger.warning("Restarting thread '{0}'.", name); onDisable(); } callbackManager.init(); if (mainThreadExecutor != null) mainThreadExecutor.init(); runningWorkers.put(getClass(), this); thread = createThread(); thread.start(); }
private void _submitQuery(WorkerRunnable runnable, WorkerCallback callback) { callbackManager.setupCallback(runnable, callback); _submitQuery(runnable); }