privatevoiddoSomething(){OperationFuture<Empty,Empty>future=startLongRunningOperation(jobName);future.get();}privateOperationFuture<Empty,Empty>startLongRunningOperation(StringjobToStart)throwsUnsupportedEncodingException{try(OfflineUserDataJobServiceClientofflineUserDataJobServiceClient=googleAdsClient.getLatestVersion().createOfflineUserDataJobServiceClient()){// Issues an asynchronous request to run the offline user data job for executing// all added operations.returnofflineUserDataJobServiceClient.runOfflineUserDataJobAsync(jobToStart);}}
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["缺少我需要的資訊","missingTheInformationINeed","thumb-down"],["過於複雜/步驟過多","tooComplicatedTooManySteps","thumb-down"],["過時","outOfDate","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["示例/程式碼問題","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2025-08-21 (世界標準時間)。"],[[["\u003cp\u003eSeveral API calls initiate long-running operations, tracked by jobs that execute over time, making blocking RPCs undesirable.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eOperationFuture\u003c/code\u003e class facilitates interaction with long-running operations, but requires the service client to remain active during its usage.\u003c/p\u003e\n"],["\u003cp\u003eDirectly using \u003ccode\u003eOperationFuture\u003c/code\u003e within a method without ensuring the service client's lifespan can lead to issues.\u003c/p\u003e\n"],["\u003cp\u003eIt's recommended to utilize \u003ccode\u003eOperationFuture\u003c/code\u003e within the scope of the service client, as demonstrated in the "Recommended" code example, to prevent premature client destruction.\u003c/p\u003e\n"]]],[],null,["# Long-running operations (LROs)\n\nSeveral calls to the API return long-running operations. These track the status\nof a job which executes over an extended period of time, such that having a\nblocking RPC is not desirable.\n\nOperationFuture class\n---------------------\n\nThe most obvious way to interact with LROs is with the\n[`OperationFuture`](//googleapis.dev/java/gax/latest/com/google/api/gax/longrunning/OperationFuture.html) class. If you use this, make sure that the service client is not destroyed.\n\nNot recommended: \n\n private void doSomething() {\n OperationFuture\u003cEmpty, Empty\u003e future = startLongRunningOperation(jobName);\n future.get();\n }\n\n private OperationFuture\u003cEmpty, Empty\u003e startLongRunningOperation(String jobToStart)\n throws UnsupportedEncodingException {\n try (OfflineUserDataJobServiceClient offlineUserDataJobServiceClient =\n googleAdsClient.getLatestVersion().createOfflineUserDataJobServiceClient()) {\n // Issues an asynchronous request to run the offline user data job for executing\n // all added operations.\n return offlineUserDataJobServiceClient.runOfflineUserDataJobAsync(jobToStart);\n }\n }\n\nRecommended: \n\n private void doSomethingElse() {\n try (OfflineUserDataJobServiceClient offlineUserDataJobServiceClient =\n googleAdsClient.getLatestVersion().createOfflineUserDataJobServiceClient()) {\n OperationFuture\u003cEmpty, Empty\u003e future = startLongRunningOperation(offlineUserDataJobServiceClient, jobName);\n future.get();\n }\n }\n\n private OperationFuture\u003cEmpty, Empty\u003e startLongRunningOperation(String jobToStart)\n throws UnsupportedEncodingException {\n offlineUserDataJobServiceClient.runOfflineUserDataJobAsync(jobToStart);\n }\n\nNotice how the `OperationFuture` class is only used while the\n`OfflineUserDataJobServiceClient` is in scope."]]