Java后端如何实现轮训
时间: 2024-09-25 19:13:55 浏览: 38
在Java后端实现轮询机制来监听外部服务器的数据变化,通常使用定时任务(Timer或者ScheduledExecutorService)配合HTTP客户端(如Apache HttpClient或者OkHttp)。以下是一个简单的示例,展示如何每隔一段时间发送GET请求:
```java
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledFuture;
public class PollingExample {
private static final long INTERVAL_SECONDS = 60; // 轮询间隔,这里是1分钟
public static void main(String[] args) throws Exception {
OkHttpClient client = new OkHttpClient();
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
Runnable task = () -> {
try {
String url = "http://example.com/api/data"; // 要请求的URL
Request request = new Request.Builder()
.url(url)
.header("Authorization", "Bearer your_token") // 如果有身份验证
.build();
Response response = client.newCall(request).execute();
if (response.isSuccessful()) {
System.out.println("Data updated at " + response.body().string());
}
} catch (Exception e) {
System.err.println("Error during polling: " + e.getMessage());
}
};
ScheduledFuture<?> future = executor.scheduleAtFixedRate(task, 0, INTERVAL_SECONDS, TimeUnit.SECONDS);
// ...其他业务逻辑...
// 在程序结束前取消定时任务,防止资源泄露
executor.shutdownNow();
future.cancel(true);
}
}
```
这个例子中,`ScheduledExecutorService`负责定期执行`task`函数,即发送HTTP请求。请注意,实际应用中可能需要处理线程异常、网络错误以及数据解析等问题。
阅读全文