Java并发包--ReentrantLock

Posted Lance_xu_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java并发包--ReentrantLock相关的知识,希望对你有一定的参考价值。

Java并发包–ReentrantLock

Java的线程安全,除了基本的同步锁以外,Jdk还为开发者提供了各种同步控制工具,如ReentrantLock,位于java.util.concurrent.locks包下的同步锁工具。

  1. 可重入
    拿几次lock,就需要释放几次。

    package com.borderxlab.concurrent.locks.reentrantlock;
    
    import java.util.concurrent.locks.ReentrantLock;
    
    public class ReenterLock implements Runnable 
        public static ReentrantLock lock = new ReentrantLock();
        public static int i = 0;
    
        @Override
        public void run() 
          for (int j = 0; j < 10000; j ++) 
            lock.lock();
            lock.lock();
            try 
              i ++;
             finally 
              lock.unlock();
              lock.unlock();
            
          
        
    
        public static void main(String[] args) throws InterruptedException 
          ReenterLock r = new ReenterLock();
          Thread t1 = new Thread(r);
          Thread t2 = new Thread(r);
          t1.start();
          t2.start();
          t1.join();
          t2.join();
          System.out.println(i);
        
    
  2. 可中断

  3. 可限时

  4. 公平锁

以上是关于Java并发包--ReentrantLock的主要内容,如果未能解决你的问题,请参考以下文章

Java并发包4--可重入锁ReentrantLock的实现原理

java并发包源码怎么读

Java中juc并发包下的Condition接口与ReentrantLock对象锁实现线程通信

Java 并发编程 进阶 -- Java并发包中锁原理剖析(LockSupport抽象同步队列AQS独占锁ReentrantLock读写锁ReentrantReadWriteLock)

Java 并发编程 进阶 -- Java并发包中锁原理剖析(LockSupport抽象同步队列AQS独占锁ReentrantLock读写锁ReentrantReadWriteLock)

JDK并发包