# Interface DeferredTask (5.0.3)

    public interface DeferredTask extends Runnable, Serializable

Interface for deferred tasks. Classes implementing this interface may use [TaskOptions#payload(DeferredTask)](https://docs.cloud.google.com/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.taskqueue.TaskOptions#com_google_appengine_api_taskqueue_TaskOptions_payload_com_google_appengine_api_taskqueue_DeferredTask_) to serialize the [DeferredTask](https://docs.cloud.google.com/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.taskqueue.DeferredTask) into the payload of the
task definition. The DeferredTask#run() method will be called when the task is received
by the built in DeferredTask servlet.

Normal return from this method is considered success and will not retry unless [DeferredTaskContext#markForRetry](https://docs.cloud.google.com/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.taskqueue.DeferredTaskContext#com_google_appengine_api_taskqueue_DeferredTaskContext_markForRetry_) is called. Exceptions thrown from this method will indicate a
failure and will be processed as a retry attempt unless [DeferredTaskContext#setDoNotRetry(boolean)](https://docs.cloud.google.com/appengine/docs/standard/java-gen2/reference/services/bundled/latest/com.google.appengine.api.taskqueue.DeferredTaskContext#com_google_appengine_api_taskqueue_DeferredTaskContext_setDoNotRetry_boolean_) was set to `true`.

## Implements

[Runnable](https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html), [Serializable](https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html)