问题

当多台Tomcat同时进行调度时,如果没有处理好并发的问题,就会出现本应只是执行一次的Task,执行了两次(比如修改DB)。

DB解决办法

在执行DB修改操作的方法上,添加上@Transactional(即添加事务处理)。 如果想提高并发的话,减小事务锁的行数(这里是基于支持事务和行级锁的DB来说的,只支持全表锁的DB,可以忽略这行为),然后进行分批处理.

利用Redis的单线程处理机制

利用redis的单线程处理机制,实现类似*跨JVM锁*的功能。合理控制好大范围并发,局部顺序执行(减小锁的范围)。

注:DB的话,最好还是由DB自身的MVCC特性来保证.