Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说scheduleAtFixedRate条件停止「终于解决」,希望能够帮助你!!!。
线程池定时任务条件取消
使用的方法是scheduleAtFixedRate
重写run方法,delay10秒后开始,每重复任务
取消的话使用的方法是设置volatile变量flag,当符合取消的条件后将flag置为true
private volatile boolean flag = false;
ConcurrentHashMap<String, ScheduledFuture> taskMap = new ConcurrentHashMap<>(1);
ScheduledExecutorService scheduleExecutor = new ScheduledThreadPoolExecutor(1);
ScheduledFuture scheduledFuture = scheduleExecutor.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
try {
if (getDownloadURL(taskId, accessToken) != null) {
//方式2:通过cancel方式终止任务
System.out.println("终止...");
flag = true;
taskMap.get("scheduledFuture").cancel(true);
// System.out.println("downloadURL:"+downloadURL);
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}, 10, 30, TimeUnit.SECONDS);
taskMap.put("scheduledFuture", scheduledFuture);
while(!flag){
}
上一篇
已是最后文章
下一篇
已是最新文章