@Override public int getQueuedTaskCount() { int result = 0; for (TaskPriority p : TaskPriority.values()) { result += getQueueManager().getQueueSet(p).queueSize(); } return result; }
protected void executeTasksWhileRunning() { while (isRunning()) { TaskWrapper nextTask = workerPool.workerIdle(this); if (nextTask != null) { // may be null if we are shutting down nextTask.runTask(); } } }
@Override public int getQueuedTaskCount(TaskPriority priority) { if (priority == null) { return getQueuedTaskCount(); } return getQueueManager().getQueueSet(priority).queueSize(); }
@Override protected OneTimeTaskWrapper doSchedule(Runnable task, long delayInMillis, TaskPriority priority) { QueueSet queueSet = queueManager.getQueueSet(priority); OneTimeTaskWrapper result; if (delayInMillis == 0) { queueSet.addExecute((result = new NoThreadOneTimeTaskWrapper(task, queueSet.executeQueue, nowInMillis(false)))); } else { queueSet.addScheduled((result = new NoThreadOneTimeTaskWrapper(task, queueSet.scheduleQueue, nowInMillis(true) + delayInMillis))); } return result; }
public QueueManager(QueueSetListener queueSetListener, long maxWaitForLowPriorityInMs) { this.highPriorityQueueSet = new QueueSet(queueSetListener); this.lowPriorityQueueSet = new QueueSet(queueSetListener); this.starvablePriorityQueueSet = new QueueSet(queueSetListener); // call to verify and set values setMaxWaitForLowPriority(maxWaitForLowPriorityInMs); }
/** * Changes the max wait time for low priority tasks. This is the amount of time that a low * priority task will wait if there are ready to execute high priority tasks. After a low * priority task has waited this amount of time, it will be executed fairly with high priority * tasks (meaning it will only execute the high priority task if it has been waiting longer than * the low priority task). * * @param maxWaitForLowPriorityInMs new wait time in milliseconds for low priority tasks during thread contention */ public void setMaxWaitForLowPriority(long maxWaitForLowPriorityInMs) { getQueueManager().setMaxWaitForLowPriority(maxWaitForLowPriorityInMs); }
@Override public <T> ListenableFuture<T> submitScheduled(Runnable task, T result, long delayInMs, TaskPriority priority) { return submitScheduled(RunnableCallableAdapter.adapt(task, result), delayInMs, priority); }
@Override public int getWaitingForExecutionTaskCount() { int result = 0; for (TaskPriority p : TaskPriority.values()) { result += getWaitingForExecutionTaskCount(p); } return result; }
@Override public void scheduleAtFixedRate(Runnable task, long initialDelay, long period, TaskPriority priority) { getRunningScheduler().scheduleAtFixedRate(task, initialDelay, period, priority); }
@Override public boolean isTerminated() { return scheduler.isShutdown() && pScheduler.getCurrentPoolSize() == 0; }
@Override protected void doSchedule(Runnable task, long delayInMillis) { MASTER_SCHEDULER.doSchedule(new PoolResizingOnCompleteionTask(task), delayInMillis, TaskPriority.High); }
@Override public long getScheduleDelay() { if (getRunTime() > nowInMillis(false)) { return getRunTime() - nowInMillis(true); } else { return 0; } }
@Override public long getScheduleDelay() { if (getRunTime() > nowInMillis(false)) { return getRunTime() - nowInMillis(true); } else { return 0; } }
@Override public SchedulerService makeSchedulerService(int poolSize, boolean prestartIfAvailable) { SingleThreadScheduler result = makeAbstractPriorityScheduler(poolSize); if (prestartIfAvailable) { if (prestartIfAvailable) { result.prestartExecutionThread(true); } } return result; }
@Override protected void addToExecuteQueue(QueueSet queueSet, OneTimeTaskWrapper task) { verifyOneTimeTaskQueueSet(queueSet, task); super.addToExecuteQueue(queueSet, task); }
@Override public int getQueuedTaskCount() { int result = 0; for (TaskPriority p : TaskPriority.values()) { result += getQueueManager().getQueueSet(p).queueSize(); } return result; }
@Override public int getQueuedTaskCount(TaskPriority priority) { if (priority == null) { return getQueuedTaskCount(); } return getQueueManager().getQueueSet(priority).queueSize(); }
protected void executeTasksWhileRunning() { while (isRunning()) { TaskWrapper nextTask = workerPool.workerIdle(this); if (nextTask != null) { // may be null if we are shutting down nextTask.runTask(); } } }
public QueueManager(QueueSetListener queueSetListener, long maxWaitForLowPriorityInMs) { this.highPriorityQueueSet = new QueueSet(queueSetListener); this.lowPriorityQueueSet = new QueueSet(queueSetListener); this.starvablePriorityQueueSet = new QueueSet(queueSetListener); // call to verify and set values setMaxWaitForLowPriority(maxWaitForLowPriorityInMs); }
@Override protected void doSchedule(Runnable task, long delayInMillis) { MASTER_SCHEDULER.doSchedule(new PoolResizingOnCompleteionTask(task), delayInMillis, TaskPriority.High); }