JAVA多线程重入锁ReentrantLock应用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA多线程重入锁ReentrantLock应用相关的知识,希望对你有一定的参考价值。

package concurrent; import java.util.concurrent.*; import java.util.concurrent.locks.ReentrantLock; /** * @Auther:zhl * @Date:2019/7/13 * @Description: 并发测试,重入锁ReentrantLock解决并发问题 */ public class ConcurrentSample //并发线程数量 private static int users = 100; //访问次数 private static int count = 10000; //访问总量 private static int number = 0; //private static CyclicBarrier cyclicBarrier = new CyclicBarrier(10000); private static ReentrantLock reentrantLock = new ReentrantLock(); public static void main(String[] args) throws InterruptedException //定义线程池 ExecutorService executorService = Executors.newCachedThreadPool(); //并发量 //Semaphore semaphore = new Semaphore(users); CountDownLatch countDownLatch = new CountDownLatch(count); for (int i = 0; i < count; i++) executorService.execute(() -> try //semaphore.acquire(); add(); countDownLatch.countDown(); //semaphore.release(); catch (Exception e) e.printStackTrace(); ); countDownLatch.await(); executorService.shutdown(); System.out.println("计数器:" + number); public static void add() //加锁 reentrantLock.lock(); number++; //解锁 reentrantLock.unlock();

以上是关于JAVA多线程重入锁ReentrantLock应用的主要内容,如果未能解决你的问题,请参考以下文章

Java 重入锁 ReentrantLock 原理分析

ReentrantLock 重入锁(下)

Java 多线程 重入锁

Java并发程序设计(12)并发锁之可重入锁ReentrantLock

40 多线程——ReentrantLock 可重入锁

java可重入锁(ReentrantLock)的实现原理