TestRedissonLock.java 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package com.izouma.nineth;
  2. import org.junit.jupiter.api.Test;
  3. import org.redisson.api.RLock;
  4. import org.redisson.api.RedissonClient;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import java.util.concurrent.TimeUnit;
  7. import org.springframework.boot.test.context.SpringBootTest;
  8. import org.junit.jupiter.api.extension.ExtendWith;
  9. import org.springframework.test.context.junit.jupiter.SpringExtension;
  10. @ExtendWith(SpringExtension.class)
  11. @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class TestRedissonLock {
  12. @Autowired
  13. private RedissonClient redissonClient;
  14. @Test
  15. public void testLock() throws InterruptedException {
  16. RLock lock = redissonClient.getLock("testLock");
  17. Thread t1 = new Thread(() -> {
  18. lock.lock(10, TimeUnit.SECONDS);
  19. System.out.println("线程1获取锁");
  20. try {
  21. Thread.sleep(2000);
  22. } catch (InterruptedException e) {
  23. e.printStackTrace();
  24. }
  25. lock.unlock();
  26. System.out.println("线程1释放锁");
  27. });
  28. Thread t2 = new Thread(() -> {
  29. lock.lock(10, TimeUnit.SECONDS);
  30. System.out.println("线程2获取锁");
  31. try {
  32. Thread.sleep(2000);
  33. } catch (InterruptedException e) {
  34. e.printStackTrace();
  35. }
  36. lock.unlock();
  37. System.out.println("线程2释放锁");
  38. });
  39. t1.start();
  40. t2.start();
  41. t1.join();
  42. t2.join();
  43. }
  44. }