我这里不实现JDK的java.util.concurrent.locks.Lock接口,而是自定义一个,因为JDK的有个newCondition()方法我这里暂时没实现。这个Lock提供了5个lock方法的变体,可以自行选择使用哪一个来获取锁,我的想法是
最好用带超时返回的那几个方法,因为不这样的话,假如redis挂了,线程永远都在那死循环了(关于这里,应该还可以进一步优化,如果redis挂了,Jedis的操作肯定会抛异常之类的,可以定义个机制让redis挂了的时候通知使用这个lock的用户,或者说是线程)
Java代码下载
package cc.lixiaohui.lock;
import java.util.concurrent.TimeUnit;
public interface Lock {
/**
* 阻塞性的获取锁, 不响应中断
*/
void lock();
/**
* 阻塞性的获取锁, 响应中断
*
* @throws InterruptedException
*/