*
*/
public class TaskQueue extends LinkedBlockingQueue<Runnable> {
- ThreadPoolExecutor parent = null;
+ private ThreadPoolExecutor parent = null;
public TaskQueue() {
super();
}
public boolean offer(Runnable o) {
- //we can't do any checks
- if (parent==null) return super.offer(o);
- //we are maxed out on threads, simply queue the object
- if (parent.getPoolSize() == parent.getMaximumPoolSize()) return super.offer(o);
- //we have idle threads, just add it to the queue
- if (parent.getActiveCount()<(parent.getPoolSize())) return super.offer(o);
- //if we have less threads than maximum force creation of a new thread
- if (parent.getPoolSize()<parent.getMaximumPoolSize()) return false;
- //if we reached here, we need to add it to the queue
- return super.offer(o);
+ if (parent != null && parent.getPoolSize()<parent.getMaximumPoolSize()){
+ return false;
+ } else {
+ //if we reached here, we need to add it to the queue
+ //or can't do any checks
+ return super.offer(o);
+ }
+
}
}