-
死锁
为了防止死锁,必须设置过期时间
例如:线程A拿到锁,还没有解锁,程序突然挂掉,锁一直存在,其他线程一直拿不到锁。所以要设置过期时间
-
加锁跟解锁必须是同一个线程,保证原子性
例如:线程A拿到锁,业务还没有处理完成,锁已经超时被自动删除掉了;
线程B拿到锁,线程A解锁的时候必须判断值是当前线程,否则删掉线程B的锁。
可重入锁和锁的原子性,可以用到ThreadLocal保证当前线程的值
为了防止死锁,必须设置过期时间
例如:线程A拿到锁,还没有解锁,程序突然挂掉,锁一直存在,其他线程一直拿不到锁。所以要设置过期时间
例如:线程A拿到锁,业务还没有处理完成,锁已经超时被自动删除掉了;
线程B拿到锁,线程A解锁的时候必须判断值是当前线程,否则删掉线程B的锁。
可重入锁和锁的原子性,可以用到ThreadLocal保证当前线程的值