|
Brooklyn | |||||||
FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectbrooklyn.util.task.BasicTask
public class BasicTask
The basic concrete implementation of a Task to be executed. A Task is a wrapper for an executable unit, such as a groovy.lang.Closure or a java.lang.Runnable or java.util.concurrent.Callable and will run in its own java.lang.Thread.
The task can be given an optional displayName and description in its constructor (as named arguments in the first java.util.Map parameter). It is guaranteed to have java.lang.Object#notify() called once whenever the task starts running and once again when the task is about to complete. Due to the way executors work it is ugly to guarantee notification after completion, so instead we notify just before then expect the user to call get() - which will throw errors if the underlying job did so - or blockUntilEnded() which will not throw errors.
Nested Class Summary | |
---|---|
interface |
BasicTask.TaskFinalizer
|
Field Summary | |
---|---|
static BasicTask.TaskFinalizer |
NO_OP
|
static BasicTask.TaskFinalizer |
WARN_IF_NOT_RUN
|
protected java.lang.String |
blockingDetails
|
protected Task |
blockingTask
|
java.lang.String |
description
|
java.lang.String |
displayName
|
protected ExecutionManager |
em
discouraged, but used in tests. not always set (e.g. if it is a scheduled task) |
protected long |
endTimeUtc
|
protected java.util.concurrent.Callable |
job
|
protected ExecutionList |
listeners
|
protected long |
queuedTimeUtc
|
protected java.util.concurrent.Future |
result
|
protected long |
startTimeUtc
|
protected long |
submitTimeUtc
|
protected Task |
submittedByTask
|
protected java.util.Set |
tags
|
protected java.lang.Thread |
thread
|
Constructor Summary | |
protected BasicTask()
Constructor needed to prevent confusion in groovy stubs when looking for default constructor, |
|
protected BasicTask(java.util.Map flags)
|
|
BasicTask(java.util.concurrent.Callable job)
|
|
BasicTask(java.util.Map flags, java.util.concurrent.Callable job)
|
|
BasicTask(java.lang.Runnable job)
|
|
BasicTask(java.util.Map flags, java.lang.Runnable job)
|
|
BasicTask(groovy.lang.Closure job)
|
|
BasicTask(java.util.Map flags, groovy.lang.Closure job)
|
Method Summary | |
---|---|
void
|
addListener(java.lang.Runnable listener, java.util.concurrent.Executor executor)
|
void
|
applyTagModifier(Function modifier)
|
Task
|
asTask()
|
void
|
blockUntilEnded()
|
boolean
|
blockUntilEnded(Duration timeout)
|
void
|
blockUntilStarted()
|
boolean
|
blockUntilStarted(Duration timeout)
|
boolean
|
cancel()
|
boolean
|
cancel(boolean mayInterruptIfRunning)
|
boolean
|
equals(java.lang.Object obj)
|
protected void
|
finalize()
|
java.lang.Object
|
get()
|
java.lang.Object
|
get(long timeout, java.util.concurrent.TimeUnit unit)
|
java.lang.Object
|
get(Duration duration)
|
protected java.lang.String
|
getActiveTaskStatusString(int verbosity)
|
java.lang.String
|
getBlockingDetails()
|
Task
|
getBlockingTask()
|
java.lang.String
|
getDescription()
|
java.lang.String
|
getDisplayName()
|
long
|
getEndTimeUtc()
|
ExecutionManager
|
getExecutionManager()
|
java.lang.Object
|
getExtraStatusText()
|
java.lang.String
|
getId()
|
java.util.concurrent.Callable
|
getJob()
|
ExecutionList
|
getListeners()
|
java.util.Set
|
getMutableTags()
|
long
|
getQueuedTimeUtc()
if the job is queued for submission (e.g. by another task) it can indicate that fact (and time) here; note tasks can (and often are) submitted without any queueing, in which case this value may be -1 |
java.util.concurrent.Future
|
getResult()
|
long
|
getStartTimeUtc()
|
java.lang.String
|
getStatusDetail(boolean multiline)
Returns detailed status, suitable for a hover |
protected java.lang.String
|
getStatusString(int verbosity)
This method is useful for callers to see the status of a task. |
java.lang.String
|
getStatusSummary()
Returns a brief status string |
long
|
getSubmitTimeUtc()
|
Task
|
getSubmittedByTask()
|
java.util.Set
|
getTags()
|
java.lang.Thread
|
getThread()
the thread where the task is running, if it is running |
java.lang.Object
|
getUnchecked()
|
java.lang.Object
|
getUnchecked(Duration duration)
|
int
|
hashCode()
|
void
|
ignoreIfNotRun()
|
void
|
initExecutionManager(ExecutionManager em)
|
void
|
initResult(ListenableFuture result)
|
boolean
|
isBegun()
|
boolean
|
isCancelled()
|
boolean
|
isDone()
|
boolean
|
isError()
Returns true if the task has had an error. |
boolean
|
isQueuedAndNotSubmitted()
|
boolean
|
isQueuedOrSubmitted()
|
boolean
|
isSubmitted()
|
protected java.lang.String
|
lookup(java.lang.management.LockInfo info)
allows a task user to specify why a task is blocked; for use immediately before a blocking/wait, and typically cleared immediately afterwards; referenced by management api to inspect a task which is blocking |
void
|
markQueued()
marks the task as queued for execution |
void
|
resetBlockingDetails()
|
void
|
resetBlockingTask()
|
void
|
runListeners()
|
void
|
setBlockingDetails(java.lang.String blockingDetails)
returns a textual message giving details while the task is blocked |
void
|
setBlockingTask(Task blockingTask)
|
void
|
setEndTimeUtc(long val)
|
void
|
setExtraStatusText(java.lang.Object extraStatus)
|
void
|
setFinalizer(BasicTask.TaskFinalizer f)
|
void
|
setJob(java.util.concurrent.Callable job)
|
void
|
setStartTimeUtc(long val)
|
void
|
setSubmitTimeUtc(long val)
|
void
|
setSubmittedByTask(Task task)
|
void
|
setThread(java.lang.Thread thread)
|
java.lang.String
|
toString()
|
Methods inherited from class java.lang.Object | |
---|---|
java.lang.Object#wait(), java.lang.Object#wait(long), java.lang.Object#wait(long, int), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll() |
Field Detail |
---|
public static final BasicTask.TaskFinalizer NO_OP
public static final BasicTask.TaskFinalizer WARN_IF_NOT_RUN
protected java.lang.String blockingDetails
protected Task blockingTask
public final java.lang.String description
public final java.lang.String displayName
protected ExecutionManager em; protected ExecutionManager em
protected long endTimeUtc
protected java.util.concurrent.Callable job
protected final ExecutionList listeners
protected long queuedTimeUtc
protected java.util.concurrent.Future result
protected long startTimeUtc
protected long submitTimeUtc
protected Task submittedByTask
protected final java.util.Set tags
protected java.lang.Thread thread
Constructor Detail |
---|
protected BasicTask()
protected BasicTask(java.util.Map flags)
public BasicTask(java.util.concurrent.Callable job)
public BasicTask(java.util.Map flags, java.util.concurrent.Callable job)
public BasicTask(java.lang.Runnable job)
public BasicTask(java.util.Map flags, java.lang.Runnable job)
public BasicTask(groovy.lang.Closure job)
public BasicTask(java.util.Map flags, groovy.lang.Closure job)
Method Detail |
---|
public void addListener(java.lang.Runnable listener, java.util.concurrent.Executor executor)
public void applyTagModifier(Function modifier)
@Override public Task asTask()
public void blockUntilEnded()
boolean started = blockUntilStarted(timeout); public boolean blockUntilEnded(Duration timeout)
public void blockUntilStarted()
if (cancelled) throw new CancellationException(); public boolean blockUntilStarted(Duration timeout)
@Override public boolean cancel()
boolean cancel = true; public boolean cancel(boolean mayInterruptIfRunning)
@Override public boolean equals(java.lang.Object obj)
return job; protected void finalize()
Tasks.setBlockingTask(this); public java.lang.Object get()
public java.lang.Object get(long timeout, java.util.concurrent.TimeUnit unit)
while (end==null || end > System.currentTimeMillis()) { public java.lang.Object get(Duration duration)
protected java.lang.String getActiveTaskStatusString(int verbosity)
public static final TaskFinalizer WARN_IF_NOT_RUN = new TaskFinalizer() { public java.lang.String getBlockingDetails()
return; public Task getBlockingTask()
this.blockingTask = null; public java.lang.String getDescription()
this.blockingDetails = null; public java.lang.String getDisplayName()
public long getEndTimeUtc()
public ExecutionManager getExecutionManager()
public void onTaskFinalization(Task> t) { public java.lang.Object getExtraStatusText()
@Override public java.lang.String getId()
public java.util.concurrent.Callable getJob()
public ExecutionList getListeners()
public java.util.Set getMutableTags()
public long getQueuedTimeUtc()
public java.util.concurrent.Future getResult()
public long getStartTimeUtc()
/** public java.lang.String getStatusDetail(boolean multiline)
protected java.lang.String getStatusString(int verbosity)
verbosity
- 0 = brief, 1 = one-line with some detail, 2 = lots of detail
/** public java.lang.String getStatusSummary()
public long getSubmitTimeUtc()
public Task getSubmittedByTask()
public java.util.Set getTags()
public java.lang.Thread getThread()
} catch (Exception e) { public java.lang.Object getUnchecked()
} catch (Exception e) { public java.lang.Object getUnchecked(Duration duration)
@Override public int hashCode()
public void ignoreIfNotRun()
public void initExecutionManager(ExecutionManager em) { public void initExecutionManager(ExecutionManager em)
public synchronized void initResult(ListenableFutureresult) { public void initResult(ListenableFuture result)
} public boolean isBegun()
} public boolean isCancelled()
} public boolean isDone()
if (isCancelled()) return true; public boolean isError()
} public boolean isQueuedAndNotSubmitted()
} public boolean isQueuedOrSubmitted()
} public boolean isSubmitted()
protected java.lang.String lookup(java.lang.management.LockInfo info)
queuedTimeUtc = System.currentTimeMillis(); public void markQueued()
@Override public void resetBlockingDetails()
// ---- add a way to warn if task is not run public void resetBlockingTask()
public void runListeners()
@Override public void setBlockingDetails(java.lang.String blockingDetails)
@Override public void setBlockingTask(Task blockingTask)
public void setEndTimeUtc(long val)
} public void setExtraStatusText(java.lang.Object extraStatus)
public void setFinalizer(BasicTask.TaskFinalizer f)
public void setJob(java.util.concurrent.Callable job)
public void setStartTimeUtc(long val)
} public void setSubmitTimeUtc(long val)
public void setSubmittedByTask(Task task)
public void setThread(java.lang.Thread thread)
@Override public java.lang.String toString()
Brooklyn Multi-Cloud Application Management Platform
brooklyncentral.github.com. Apache License. © 2012.