google guava定时任务
时间: 2023-09-01 08:12:49 浏览: 149
Guava并没有提供直接的定时任务功能,但是你可以使用Guava的`com.google.common.util.concurrent.RateLimiter`和`com.google.common.util.concurrent.MoreExecutors`类来实现类似的功能。下面是一个简单的示例代码,展示了如何使用Guava进行定时任务调度:
```java
import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.RateLimiter;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class GuavaSchedulerExample {
public static void main(String[] args) {
// 创建一个ScheduledExecutorService
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
// 创建一个RateLimiter,限制每秒执行的任务数量
RateLimiter rateLimiter = RateLimiter.create(1.0);
// 定时执行任务
executor.scheduleAtFixedRate(() -> {
// 获取许可
rateLimiter.acquire();
// 执行你的任务逻辑
System.out.println("Task executed at: " + System.currentTimeMillis());
}, 0, 1, TimeUnit.SECONDS);
// 等待一段时间后关闭ScheduledExecutorService
MoreExecutors.shutdownAndAwaitTermination(executor, 10, TimeUnit.SECONDS);
}
}
```
上述代码中,我们使用`RateLimiter`来限制每秒只能执行一个任务。`ScheduledExecutorService`和`RateLimiter`的结合使用可以达到类似定时任务的效果。
阅读全文