package com.leansoft.nanorest.service;
import java.util.LinkedList;
import com.leansoft.nanorest.logger.ALog;
/**
*
* @author bulldog
*
*/
public abstract class ThreadCountObserver {
public static final String TAG = ThreadCountObserver.class.getSimpleName();
public abstract void onThreadsFinished();
public abstract void newRunnableRegistered();
LinkedList<Runnable> observerList = new LinkedList<Runnable>();
public void registerRunnable(final Runnable r) {
synchronized (observerList) {
observerList.add(r);
}
newRunnableRegistered();
ALog.d(TAG, "observer list size on register: " + observerList.size());
}
public void unregisterRunnable(final Runnable r) {
synchronized (observerList) {
observerList.remove(r);
}
ALog.d(TAG, "observer list size on unregister: " + observerList.size());
if (observerList.size() == 0) {
ALog.d(TAG, "observer calling finish method");
onThreadsFinished();
}
}
}