JUC学习之读写锁

Dear 丶 2022-05-19 08:44 259阅读 0赞

读写锁:(并发情况下比独占锁效率要高,适用于读操作频率高,写频率低的场景)
- 写写、读写(互斥)
- 读读(不互斥)

  1. public class Test {
  2. public static void main(String[] args) {
  3. ReadWriteLockDemo demo = new ReadWriteLockDemo();
  4. // 单个线程去写
  5. new Thread(() -> demo.setNumber(new Random().nextInt()), "Write:").start();
  6. // 多个线程并发的去读
  7. for (int i = 0; i < 100; i++) {
  8. new Thread(() -> demo.getNumber(), "Read:").start();
  9. }
  10. }
  11. }
  12. class ReadWriteLockDemo {
  13. private int number = 0;
  14. private ReadWriteLock lock = new ReentrantReadWriteLock();
  15. public void getNumber() {
  16. // 加读锁
  17. lock.readLock().lock();
  18. try {
  19. System.out.println(Thread.currentThread().getName() + " : " + number);
  20. } finally {
  21. // 释放读锁
  22. lock.readLock().unlock();
  23. }
  24. }
  25. public void setNumber(int number) {
  26. // 加写锁
  27. lock.writeLock().lock();
  28. try {
  29. System.out.println(Thread.currentThread().getName() + " : " + number);
  30. this.number = number;
  31. } finally {
  32. // 释放写锁
  33. lock.writeLock().unlock();
  34. }
  35. }
  36. }

发表评论

表情:
评论列表 (有 0 条评论,259人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JUC学习

    读写锁:(并发情况下比独占锁效率要高,适用于读操作频率高,写频率低的场景) \- 写写、读写(互斥) \- 读读(不互斥) public class Test