public void executeTask() {
    String lockKey = "task_lock_key";
    String lockValue = UUID.randomUUID().toString();
    long lockTimeout = 60; // 锁超时时间60秒
 
    // 尝试获取分布式锁
    if (redisTemplate.opsForValue().setIfAbsent(lockKey, lockValue, lockTimeout, TimeUnit.SECONDS)) {
        try {
            // 执行任务逻辑
            doTask();
        } finally {
            // 释放锁,确保即使任务执行异常也能释放锁
            if (lockValue.equals(redisTemplate.opsForValue().get(lockKey))) {
                redisTemplate.delete(lockKey);
            }
        }
    } else {
        // 其他实例已获取锁,本次任务不执行或等待下次调度
    }
}
 
private void doTask() {
    // 实际的任务执行代码
}