The retry executor which executes attempts in the current thread, potentially causing the current
thread to sleep for the specified amount of time before execution.
Creates a RetryingFuture, which is a facade, returned to the client code to wait for
any retriable operation to complete. The future is bounded to this executor instance.
Creates a RetryingFuture, which is a facade, returned to the client code to wait for
any retriable operation to complete. The future is bounded to this executor instance.
Submits an attempt for execution in the current thread, causing the current thread to sleep for
the specified by the RetryingFuture#getAttemptSettings() amount of time. As result,
this method completes execution only after the specified retryingFuture completes.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-28 UTC."],[[["\u003cp\u003eThe latest version available for \u003ccode\u003eDirectRetryingExecutor\u003c/code\u003e is 2.63.1, as seen in the provided list of versions.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eDirectRetryingExecutor\u003c/code\u003e is a thread-safe retry executor that executes attempts in the current thread, potentially pausing the thread for a specified duration.\u003c/p\u003e\n"],["\u003cp\u003eThis class implements the \u003ccode\u003eRetryingExecutorWithContext\u003c/code\u003e interface and uses a provided \u003ccode\u003eRetryAlgorithm\u003c/code\u003e to determine the retry strategy.\u003c/p\u003e\n"],["\u003cp\u003eIt offers \u003ccode\u003ecreateFuture\u003c/code\u003e methods to return a \u003ccode\u003eRetryingFuture\u003c/code\u003e facade, allowing clients to monitor the completion of retriable operations.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003esubmit\u003c/code\u003e method executes an attempt in the current thread, pausing execution as specified by \u003ccode\u003eRetryingFuture\u003c/code\u003e settings and completes only after the operation is finished.\u003c/p\u003e\n"]]],[],null,["# Class DirectRetryingExecutor<ResponseT> (2.69.0)\n\nVersion latestkeyboard_arrow_down\n\n- [2.69.0 (latest)](/java/docs/reference/gax/latest/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.68.2](/java/docs/reference/gax/2.68.2/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.67.0](/java/docs/reference/gax/2.67.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.66.0](/java/docs/reference/gax/2.66.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.65.0](/java/docs/reference/gax/2.65.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.63.1](/java/docs/reference/gax/2.63.1/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.62.0](/java/docs/reference/gax/2.62.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.61.0](/java/docs/reference/gax/2.61.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.60.0](/java/docs/reference/gax/2.60.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.59.1](/java/docs/reference/gax/2.59.1/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.58.0](/java/docs/reference/gax/2.58.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.57.0](/java/docs/reference/gax/2.57.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.55.0](/java/docs/reference/gax/2.55.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.54.1](/java/docs/reference/gax/2.54.1/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.53.0](/java/docs/reference/gax/2.53.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.52.0](/java/docs/reference/gax/2.52.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.51.0](/java/docs/reference/gax/2.51.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.50.0](/java/docs/reference/gax/2.50.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.49.0](/java/docs/reference/gax/2.49.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.48.1](/java/docs/reference/gax/2.48.1/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.47.0](/java/docs/reference/gax/2.47.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.46.1](/java/docs/reference/gax/2.46.1/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.45.0](/java/docs/reference/gax/2.45.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.43.0](/java/docs/reference/gax/2.43.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.42.0](/java/docs/reference/gax/2.42.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.41.0](/java/docs/reference/gax/2.41.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.39.0](/java/docs/reference/gax/2.39.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.38.0](/java/docs/reference/gax/2.38.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.37.0](/java/docs/reference/gax/2.37.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.36.0](/java/docs/reference/gax/2.36.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.35.0](/java/docs/reference/gax/2.35.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.34.1](/java/docs/reference/gax/2.34.1/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.33.0](/java/docs/reference/gax/2.33.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.32.1](/java/docs/reference/gax/2.32.1/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.31.1](/java/docs/reference/gax/2.31.1/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.30.1](/java/docs/reference/gax/2.30.1/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.24.0](/java/docs/reference/gax/2.24.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.23.3](/java/docs/reference/gax/2.23.3/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.22.0](/java/docs/reference/gax/2.22.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.21.0](/java/docs/reference/gax/2.21.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.20.1](/java/docs/reference/gax/2.20.1/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.19.6](/java/docs/reference/gax/2.19.6/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.18.7](/java/docs/reference/gax/2.18.7/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.17.0](/java/docs/reference/gax/2.17.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.16.0](/java/docs/reference/gax/2.16.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.15.0](/java/docs/reference/gax/2.15.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.14.0](/java/docs/reference/gax/2.14.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.13.0](/java/docs/reference/gax/2.13.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.12.2](/java/docs/reference/gax/2.12.2/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.11.0](/java/docs/reference/gax/2.11.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.10.0](/java/docs/reference/gax/2.10.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.9.0](/java/docs/reference/gax/2.9.0/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.8.1](/java/docs/reference/gax/2.8.1/com.google.api.gax.retrying.DirectRetryingExecutor)\n- [2.7.1](/java/docs/reference/gax/2.7.1/com.google.api.gax.retrying.DirectRetryingExecutor) \n\n public class DirectRetryingExecutor\u003cResponseT\u003e implements RetryingExecutorWithContext\u003cResponseT\u003e\n\nThe retry executor which executes attempts in the current thread, potentially causing the current\nthread to sleep for the specified amount of time before execution.\n\nThis class is thread-safe. \n\nInheritance\n-----------\n\n[java.lang.Object](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html) \\\u003e DirectRetryingExecutor\\\u003cResponseT\\\u003e \n\nImplements\n----------\n\ncom.google.api.gax.retrying.RetryingExecutorWithContext\\\u003cResponseT\\\u003e \n\nInherited Members\n-----------------\n\n[Object.clone()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#clone--) \n[Object.equals(Object)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-) \n[Object.finalize()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#finalize--) \n[Object.getClass()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#getClass--) \n[Object.hashCode()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#hashCode--) \n[Object.notify()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notify--) \n[Object.notifyAll()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notifyAll--) \n[Object.toString()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#toString--) \n[Object.wait()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait--) \n[Object.wait(long)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-) \n[Object.wait(long,int)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-int-)\n\nConstructors\n------------\n\n### DirectRetryingExecutor(RetryAlgorithm\\\u003cResponseT\\\u003e retryAlgorithm)\n\n public DirectRetryingExecutor(RetryAlgorithm\u003cResponseT\u003e retryAlgorithm)\n\nCreates a new direct retrying executor instance, which will be using `retryAlgorithm` to\ndetermine retrying strategy.\n\nMethods\n-------\n\n### createFuture(Callable\\\u003cResponseT\\\u003e callable)\n\n public RetryingFuture\u003cResponseT\u003e createFuture(Callable\u003cResponseT\u003e callable)\n\nCreates a [RetryingFuture](/java/docs/reference/gax/latest/com.google.api.gax.retrying.RetryingFuture), which is a facade, returned to the client code to wait for\nany retriable operation to complete. The future is bounded to `this` executor instance.\n\n### createFuture(Callable\\\u003cResponseT\\\u003e callable, RetryingContext context)\n\n public RetryingFuture\u003cResponseT\u003e createFuture(Callable\u003cResponseT\u003e callable, RetryingContext context)\n\nCreates a [RetryingFuture](/java/docs/reference/gax/latest/com.google.api.gax.retrying.RetryingFuture), which is a facade, returned to the client code to wait for\nany retriable operation to complete. The future is bounded to `this` executor instance.\n\n### sleep(Duration delay)\n\n protected void sleep(Duration delay)\n\nThis method simply calls Thread#sleep(long).\n\n### submit(RetryingFuture\\\u003cResponseT\\\u003e retryingFuture)\n\n public ApiFuture\u003cResponseT\u003e submit(RetryingFuture\u003cResponseT\u003e retryingFuture)\n\nSubmits an attempt for execution in the current thread, causing the current thread to sleep for\nthe specified by the [RetryingFuture#getAttemptSettings()](/java/docs/reference/gax/latest/com.google.api.gax.retrying.RetryingFuture#com_google_api_gax_retrying_RetryingFuture_getAttemptSettings__) amount of time. As result,\nthis method completes execution only after the specified `retryingFuture` completes."]]