1.有人可能会问是否可以考虑采用ReentrantLock来实现,但是实际上去实现的时候是有问题的,ReentrantLock的lock和unlock要求必须是在同一线程进行,而分布式应用中,lock和unlock是两次不相关的请求,因此肯定不是同一线程,因此导致无法使用ReentrantLock。
2. 基于数据库表做乐观锁,用于分布式锁。
3. 使用memcached的add()方法,用于分布式锁。
4. 使用memcached的cas()方法,用于分布式锁。(不常用)
5. 使用redis的setnx()、expire()方法,用于分布式锁。
6. 使用redis的setnx()、get()、getset()方法,用于分布式锁。
7. 使用redis的watch、multi、exec命令,用于分布式锁。(不常用)
8. 使用zookeeper,用于分布式锁。(不常用)