|
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 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()
|
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
|
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()
returns a task that this task is blocked on |
void
|
resetBlockingTask()
|
void
|
runListeners()
|
java.lang.String
|
setBlockingDetails(java.lang.String blockingDetails)
|
Task
|
setBlockingTask(Task blockingTask)
returns a textual message giving details while the task is blocked |
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()
|
boolean
|
uncancel()
doesn't resume it, just means if something was cancelled but not submitted it could now be submitted; probably going to be removed and perhaps some mechanism for running again made available |
Methods inherited from class java.lang.Object | |
---|---|
java.lang.Object#wait(long, int), java.lang.Object#wait(long), java.lang.Object#wait(), 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 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 |
---|
@java.lang.Override public void addListener(java.lang.Runnable listener, java.util.concurrent.Executor executor)
@java.lang.Override public void applyTagModifier(Function modifier)
@java.lang.Override public Task asTask()
@java.lang.Override public void blockUntilEnded()
@java.lang.Overrideboolean started = blockUntilStarted(timeout); public boolean blockUntilEnded(Duration timeout)
@java.lang.Override public void blockUntilStarted()
@java.lang.Overrideif (cancelled) throw new CancellationException(); public boolean blockUntilStarted(Duration timeout)
@java.lang.Override/** doesn't resume it, just means if something was cancelled but not submitted it could now be submitted; public boolean cancel()
@java.lang.Overrideboolean cancel = true; public boolean cancel(boolean mayInterruptIfRunning)
@java.lang.Override public boolean equals(java.lang.Object obj)
@java.lang.Override} protected void finalize()
@java.lang.OverrideTasks.setBlockingTask(this); public java.lang.Object get()
@java.lang.Override public java.lang.Object get(long timeout, java.util.concurrent.TimeUnit unit)
@java.lang.Overridewhile (end==null || end > System.currentTimeMillis()) { public java.lang.Object get(Duration duration)
protected java.lang.String getActiveTaskStatusString(int verbosity)
@java.lang.Overridepublic interface TaskFinalizer { public java.lang.String getBlockingDetails()
@java.lang.Overridepublic void onTaskFinalization(Task> t) { public Task getBlockingTask()
@java.lang.Override public java.lang.String getDescription()
@java.lang.Overridepublic Task> setBlockingTask(Task> blockingTask) { public java.lang.String getDisplayName()
@java.lang.Override public long getEndTimeUtc()
@java.lang.Override} public java.lang.Object getExtraStatusText()
@java.lang.Override public java.lang.String getId()
@java.lang.Override public java.util.concurrent.Callable getJob()
@java.lang.Override public ExecutionList getListeners()
@java.lang.Override public java.util.Set getMutableTags()
@java.lang.Override public long getQueuedTimeUtc()
@java.lang.Override public java.util.concurrent.Future getResult()
@java.lang.Override public long getStartTimeUtc()
@java.lang.Override/** 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
@java.lang.Override/** public java.lang.String getStatusSummary()
@java.lang.Override public long getSubmitTimeUtc()
@java.lang.Override public Task getSubmittedByTask()
@java.lang.Override public java.util.Set getTags()
@java.lang.Override public java.lang.Thread getThread()
@java.lang.Override} catch (Exception e) { public java.lang.Object getUnchecked()
@java.lang.Override} catch (Exception e) { public java.lang.Object getUnchecked(Duration duration)
@java.lang.Override public int hashCode()
public void ignoreIfNotRun()
@java.lang.Overridepublic synchronized void initResult(ListenableFutureresult) { public void initResult(ListenableFuture result)
@java.lang.Override} public boolean isBegun()
@java.lang.Override} public boolean isCancelled()
@java.lang.Override} public boolean isDone()
@java.lang.Overrideif (isCancelled()) return true; public boolean isError()
@java.lang.Override} public boolean isQueuedAndNotSubmitted()
@java.lang.Override} public boolean isQueuedOrSubmitted()
@java.lang.Override} public boolean isSubmitted()
protected java.lang.String lookup(java.lang.management.LockInfo info)
@java.lang.OverridequeuedTimeUtc = System.currentTimeMillis(); public void markQueued()
@java.lang.Overridepublic void setExtraStatusText(Object extraStatus) { public void resetBlockingDetails()
@java.lang.Overridepublic Object getExtraStatusText() { public void resetBlockingTask()
@java.lang.Override public void runListeners()
@java.lang.Override public java.lang.String setBlockingDetails(java.lang.String blockingDetails)
@java.lang.Override/** returns a task that this task is blocked on */ public Task setBlockingTask(Task blockingTask)
@java.lang.Override public void setEndTimeUtc(long val)
@java.lang.Override} public void setExtraStatusText(java.lang.Object extraStatus)
public void setFinalizer(BasicTask.TaskFinalizer f)
@java.lang.Override public void setJob(java.util.concurrent.Callable job)
@java.lang.Override public void setStartTimeUtc(long val)
@java.lang.Override} public void setSubmitTimeUtc(long val)
@java.lang.Override public void setSubmittedByTask(Task task)
@java.lang.Override public void setThread(java.lang.Thread thread)
@java.lang.Override public java.lang.String toString()
@Betacancelled = false; public boolean uncancel()
Brooklyn Multi-Cloud Application Management Platform
brooklyncentral.github.com. Apache License. © 2012.