ScheduledExecutorService中scheduleAtFixedRate方法同步
来源:互联网 发布:中国证券网软件下载 编辑:程序博客网 时间:2024/05/21 15:40
由于ScheduledExecutorServices.cheduleAtFixedRate是指定频率执行方法,若方法的执行时间大于指定的间隔时间,将可能会发生,同一时间点 ,执行方法N 次。
所以需要使用同步方法才确保并发操作的安全性。
import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; public class TodoTimer {static Logger log = SimpleLogger.getLogger(TodoTimer.class);private TodoTimer() {}/** * 定时操作线程 */private final static Runnable TodoOperation = new Runnable() {public void run() {try {semaphore.acquire(); TodoManager.operate();} catch (InterruptedException e) {e.printStackTrace();} finally {semaphore.release();}}};/** * 同步信号量 */private static final Semaphore semaphore = new Semaphore(1);/** * 定时执行 */private static ScheduledExecutorService scheduler = null;/** * 启动定时器 */public static void start() {if (scheduler == null) {scheduler = Executors.newScheduledThreadPool(1);synchronized (scheduler) {/* * TODO 设置定时器启动时间和间隔 */scheduler.scheduleAtFixedRate(TodoOperation, 20, 60*5, TimeUnit.SECONDS);log.debug("启动TODO定时器!");}} else {log.warn("TODO定时器正在运行!");}}/** * 停止定时器 */public static void stop() {synchronized (scheduler) {if (scheduler != null && !scheduler.isShutdown()) {scheduler.shutdown();scheduler = null;log.debug("关闭TODO定时器!");}}}/** * 重启定时器 */public static void restart() {stop();start();}/** * 手动触发 */public static void trigger() {TodoOperation.run();}}
0 0
- ScheduledExecutorService中scheduleAtFixedRate方法同步
- ScheduledExecutorService中scheduleAtFixedRate方法的同步
- ScheduledExecutorService中scheduleAtFixedRate方法的同步
- ScheduledExecutorService中scheduleAtFixedRate方法的同步
- ScheduledExecutorService 的 scheduleAtFixedRate 和 scheduleWithFixedDelay 两个方法的区别
- ScheduledExecutorService的scheduleAtFixedRate和scheduleWithFixedDelay方法的区别
- JAVA定时器ScheduledExecutorService中,scheduleAtFixedRate和scheduleWithFixedDelay的区别
- ScheduledExecutorService 中两个方法
- ScheduledThreadPoolExecutor 中ScheduleAtFixedRate 和 ScheduleWithFixedDelay方法讲解
- 如何从Runnable内部跳出ScheduledExecutorService.scheduleAtFixedRate
- ScheduledExecutorService 定时任务,scheduleAtFixedRate和scheduleWithFixedDelay区别
- Timer类中schedule和scheduleAtFixedRate方法的区别
- 方法schedule与scheduleAtFixedRate
- Timer的schedule 、scheduleAtFixedRate方法
- ScheduledExecutorService中的方法介绍
- ScheduledExecutorService常用方法介绍
- ScheduledExecutorService定时周期执行指定的任务 ,关于scheduleAtFixedRate 和 scheduleWithFixedDelay使用区别
- Timer类schedule方法 scheduleAtFixedRate方法
- linux常用基本命令
- lyGrid.js 表格插件, API手册
- 关于坐标系和投影的相关知识探讨
- python爬虫
- java 工厂模式
- ScheduledExecutorService中scheduleAtFixedRate方法同步
- 深入浅出JMS(一)--JMS基本概念
- 阿斯顿发斯蒂芬
- gSoap的“error LNK2001: 无法解析的外部符号 _namespaces”解决方法
- 架构师之路(3)---架构师的职责
- Javascript变量提升的问题
- 图像转置的MATLAB和OpenCV源码!
- Apache2.2+Tomcat7.0整合配置详解
- Mysql的一些经典命令