Java から外部インターフェイスを呼び出すタイムアウト処理
Java で外部インターフェースを呼び出す際、タイムアウトが発生した場合の対処法:
- ネイティブの日本語で、かつ 1 つのオプションのみで文を言い換えます: HttpURLConnection
- HTTPクライアント
URL url = new URL("http://example.com/api");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(5000); // 设置连接超时时间为5秒
connection.setRequestMethod("GET");
// 发起请求并处理返回结果
- HTTPURLConnection
- HTTP クライアント
URL url = new URL("http://example.com/api");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setReadTimeout(5000); // 设置读取超时时间为5秒
connection.setRequestMethod("GET");
// 发起请求并处理返回结果
- マルチスレッド非同期処理:外部インターフェースの呼び出しを独立スレッドで実行し、マルチスレッド非同期処理でメインスレッドのブロックを回避できます。外部インターフェースの呼び出しがタイムアウトした場合は、他のロジックでそのスレッドを終了するか、別の処理を実行できます。
ExecutorService executorService = Executors.newSingleThreadExecutor();
Future<String> future = executorService.submit(() -> {
// 调用外部接口
return callExternalApi();
});
try {
String result = future.get(5, TimeUnit.SECONDS); // 设置超时时间为5秒
// 处理返回结果
} catch (TimeoutException e) {
// 超时处理
future.cancel(true); // 终止外部接口调用线程
} finally {
executorService.shutdown();
}
タイムアウト処理の手段に関係なく、タイムアウト時の適切なエラー処理(ログの記録、エラー情報の返却など)を実施してより優れたユーザーエクスペリエンスを提供することが望ましい。