hudson.util
Class SequentialExecutionQueue

java.lang.Object
  extended by hudson.util.SequentialExecutionQueue
All Implemented Interfaces:
Executor

public class SequentialExecutionQueue
extends Object
implements Executor

Executor that collapses two equal Runnables into one, and makes sure no two equal Runnables get executed simultaneously.

That is, if a Runnable is executing and another one gets submitted, the 2nd one waits for the completion of the 1st one. Object.equals(Object) is used on Runnable to identify two equal Runnables.

Author:
Kohsuke Kawaguchi

Constructor Summary
SequentialExecutionQueue(ExecutorService executors)
           
 
Method Summary
 void execute(Runnable item)
           
 ExecutorService getExecutors()
          Gets the base underlying executors.,
 Set<Runnable> getInProgress()
          Gets Runnables that are currently executed by a live thread.
 boolean isStarving(long threshold)
          Returns true if too much time is spent since some Runnable is submitted into the queue until they get executed.
 void setExecutors(ExecutorService svc)
          Starts using a new ExecutorService to carry out executions.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SequentialExecutionQueue

public SequentialExecutionQueue(ExecutorService executors)
Method Detail

getExecutors

public ExecutorService getExecutors()
Gets the base underlying executors.,


setExecutors

public void setExecutors(ExecutorService svc)
Starts using a new ExecutorService to carry out executions.

The older ExecutorService will be shut down (but it's still expected to complete whatever they are doing and scheduled.)


execute

public void execute(Runnable item)
Specified by:
execute in interface Executor

isStarving

public boolean isStarving(long threshold)
Returns true if too much time is spent since some Runnable is submitted into the queue until they get executed.


getInProgress

public Set<Runnable> getInProgress()
Gets Runnables that are currently executed by a live thread.



Copyright © 2004-2013. All Rights Reserved.