|
|
|
@ -37,19 +37,18 @@ public class RedissonLockTest extends BaseConcurrentTest {
|
|
|
|
|
lock.lock(2, TimeUnit.SECONDS);
|
|
|
|
|
|
|
|
|
|
final long startTime = System.currentTimeMillis();
|
|
|
|
|
final CountDownLatch latch = new CountDownLatch(1);
|
|
|
|
|
new Thread() {
|
|
|
|
|
Thread t = new Thread() {
|
|
|
|
|
public void run() {
|
|
|
|
|
RLock lock1 = redisson.getLock("lock");
|
|
|
|
|
lock1.lock();
|
|
|
|
|
long spendTime = System.currentTimeMillis() - startTime;
|
|
|
|
|
Assert.assertTrue(spendTime < 2020);
|
|
|
|
|
lock1.unlock();
|
|
|
|
|
latch.countDown();
|
|
|
|
|
};
|
|
|
|
|
}.start();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
latch.await();
|
|
|
|
|
t.start();
|
|
|
|
|
t.join();
|
|
|
|
|
|
|
|
|
|
lock.unlock();
|
|
|
|
|
}
|
|
|
|
@ -95,28 +94,26 @@ public class RedissonLockTest extends BaseConcurrentTest {
|
|
|
|
|
RLock lock = redisson.getLock("lock");
|
|
|
|
|
lock.lock();
|
|
|
|
|
|
|
|
|
|
final CountDownLatch latch = new CountDownLatch(1);
|
|
|
|
|
new Thread() {
|
|
|
|
|
Thread t = new Thread() {
|
|
|
|
|
public void run() {
|
|
|
|
|
RLock lock = redisson.getLock("lock");
|
|
|
|
|
Assert.assertFalse(lock.isHeldByCurrentThread());
|
|
|
|
|
latch.countDown();
|
|
|
|
|
};
|
|
|
|
|
}.start();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
latch.await();
|
|
|
|
|
t.start();
|
|
|
|
|
t.join();
|
|
|
|
|
lock.unlock();
|
|
|
|
|
|
|
|
|
|
final CountDownLatch latch2 = new CountDownLatch(1);
|
|
|
|
|
new Thread() {
|
|
|
|
|
Thread t2 = new Thread() {
|
|
|
|
|
public void run() {
|
|
|
|
|
RLock lock = redisson.getLock("lock");
|
|
|
|
|
Assert.assertFalse(lock.isHeldByCurrentThread());
|
|
|
|
|
latch2.countDown();
|
|
|
|
|
};
|
|
|
|
|
}.start();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
latch2.await();
|
|
|
|
|
t2.start();
|
|
|
|
|
t2.join();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
@ -134,28 +131,26 @@ public class RedissonLockTest extends BaseConcurrentTest {
|
|
|
|
|
RLock lock = redisson.getLock("lock");
|
|
|
|
|
lock.lock();
|
|
|
|
|
|
|
|
|
|
final CountDownLatch latch = new CountDownLatch(1);
|
|
|
|
|
new Thread() {
|
|
|
|
|
Thread t = new Thread() {
|
|
|
|
|
public void run() {
|
|
|
|
|
RLock lock = redisson.getLock("lock");
|
|
|
|
|
Assert.assertTrue(lock.isLocked());
|
|
|
|
|
latch.countDown();
|
|
|
|
|
};
|
|
|
|
|
}.start();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
latch.await();
|
|
|
|
|
t.start();
|
|
|
|
|
t.join();
|
|
|
|
|
lock.unlock();
|
|
|
|
|
|
|
|
|
|
final CountDownLatch latch2 = new CountDownLatch(1);
|
|
|
|
|
new Thread() {
|
|
|
|
|
Thread t2 = new Thread() {
|
|
|
|
|
public void run() {
|
|
|
|
|
RLock lock = redisson.getLock("lock");
|
|
|
|
|
Assert.assertFalse(lock.isLocked());
|
|
|
|
|
latch2.countDown();
|
|
|
|
|
};
|
|
|
|
|
}.start();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
latch2.await();
|
|
|
|
|
t2.start();
|
|
|
|
|
t2.join();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
@ -168,13 +163,23 @@ public class RedissonLockTest extends BaseConcurrentTest {
|
|
|
|
|
Assert.assertFalse(lock.isLocked());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// @Test(expected = IllegalMonitorStateException.class)
|
|
|
|
|
// public void testUnlockFail() {
|
|
|
|
|
// Lock lock = redisson.getLock("lock1");
|
|
|
|
|
// lock.unlock();
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
@Test(expected = IllegalMonitorStateException.class)
|
|
|
|
|
public void testUnlockFail() throws InterruptedException {
|
|
|
|
|
RLock lock = redisson.getLock("lock");
|
|
|
|
|
Thread t = new Thread() {
|
|
|
|
|
public void run() {
|
|
|
|
|
RLock lock = redisson.getLock("lock");
|
|
|
|
|
lock.lock();
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
t.start();
|
|
|
|
|
t.join();
|
|
|
|
|
|
|
|
|
|
lock.unlock();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testLockUnlock() {
|
|
|
|
|
Lock lock = redisson.getLock("lock1");
|
|
|
|
@ -196,7 +201,7 @@ public class RedissonLockTest extends BaseConcurrentTest {
|
|
|
|
|
Thread thread1 = new Thread() {
|
|
|
|
|
@Override
|
|
|
|
|
public void run() {
|
|
|
|
|
RLock lock1 = (RedissonLock) redisson.getLock("lock1");
|
|
|
|
|
RLock lock1 = redisson.getLock("lock1");
|
|
|
|
|
Assert.assertFalse(lock1.tryLock());
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
@ -215,14 +220,9 @@ public class RedissonLockTest extends BaseConcurrentTest {
|
|
|
|
|
@Override
|
|
|
|
|
public void run(RedissonClient redisson) {
|
|
|
|
|
Lock lock = redisson.getLock("testConcurrency_SingleInstance");
|
|
|
|
|
System.out.println("lock1 " + Thread.currentThread().getId());
|
|
|
|
|
lock.lock();
|
|
|
|
|
System.out.println("lock2 "+ Thread.currentThread().getId());
|
|
|
|
|
lockedCounter.incrementAndGet();
|
|
|
|
|
System.out.println("lockedCounter " + lockedCounter);
|
|
|
|
|
System.out.println("unlock1 "+ Thread.currentThread().getId());
|
|
|
|
|
lock.unlock();
|
|
|
|
|
System.out.println("unlock2 "+ Thread.currentThread().getId());
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|