`

重入锁ReentrantLock

    博客分类:
  • java
阅读更多

 

//多个线程增加1
public class StaticNum {
 
 private static Object obj = new Object();
 private static ReentrantLock lock = new ReentrantLock();
 
 public static void main(String[] args) {
  
  for(int i=0;i<2000;i++) {
   NumThread t = new NumThread("t" + i);
   t.start();
  }
 }

 static class NumThread extends Thread{
  private static int i;
  
  public NumThread(String name) {
   super(name);
  }
  
  public void run() {
   //i++;
   //并发的问题: 1.同步class
   /*
   synchronized(NumThread.class) {
    i++;
   }
   */
   //2.外面的对象同步
//   synchronized(obj) {
//    i++;
//   }
   //3.重入锁 ReentrantLock
   lock.lock();
   try {
    i++;
    System.out.println(this.getName() + "  " + i);
   }finally {
    lock.unlock();
   }
   
  }
  
  
 }
}

0
0
分享到:
评论

相关推荐

    Java源码解析之可重入锁ReentrantLock

    Java源码解析之可重入锁ReentrantLock ReentrantLock是一个可重入锁,在ConcurrentHashMap中使用了ReentrantLock。它是一个可重入的排他锁,它和synchronized的方法和代码有着相同的行为和语义,但有更多的功能。 ...

    Java重入锁ReentrantLock

     从使用场景的角度出发来介绍对ReentrantLock的使用,相对来说容易理解一些。  场景1:如果发现该操作已经在执行中则不再执行(有状态执行)  a、用在定时任务时,如果任务执行时间可能超过下次计划执行时间,...

    手写可重入锁

    可重入锁,也称为递归锁,是Java并发编程中的一个重要概念,主要在`java.util.concurrent.locks.ReentrantLock`类中实现。这个概念对于理解多线程环境下的同步控制至关重要,尤其对于初学者来说,掌握其原理和用法...

    自己动手写一把可重入锁测试案例

    在Java并发编程中,可重入锁(ReentrantLock)是一种重要的同步机制,它提供了比synchronized更高级、更灵活的锁操作。本篇将基于《Java并发编程:自己动手写一把可重入锁》一文中的案例,深入探讨可重入锁的概念、...

    Java并发编程原理精讲 视频教程 下载 因为太大 百度网盘链接4.zip

    │ 06 可重入锁ReentrantLock的锁定原理.mp4 │ 07 可重入锁ReentrantLock之公平锁.mp4 │ 08 对象条件1.mp4 │ 09 对象条件2.mp4 │ 10 条件对象的注意事项.mp4 │ 11 等待唤醒机制的基本概念.mp4 │ 12 等待...

    Java并发编程原理精讲 视频教程 下载 因为太大 百度网盘链接3.zip

    │ 06 可重入锁ReentrantLock的锁定原理.mp4 │ 07 可重入锁ReentrantLock之公平锁.mp4 │ 08 对象条件1.mp4 │ 09 对象条件2.mp4 │ 10 条件对象的注意事项.mp4 │ 11 等待唤醒机制的基本概念.mp4 │ 12 等待...

    Java并发编程原理精讲 视频教程 下载 因为太大 百度网盘链接1.zip

    │ 06 可重入锁ReentrantLock的锁定原理.mp4 │ 07 可重入锁ReentrantLock之公平锁.mp4 │ 08 对象条件1.mp4 │ 09 对象条件2.mp4 │ 10 条件对象的注意事项.mp4 │ 11 等待唤醒机制的基本概念.mp4 │ 12 等待...

    Java并发编程原理精讲 视频教程 下载 因为太大 百度网盘链接2.zip

    │ 06 可重入锁ReentrantLock的锁定原理.mp4 │ 07 可重入锁ReentrantLock之公平锁.mp4 │ 08 对象条件1.mp4 │ 09 对象条件2.mp4 │ 10 条件对象的注意事项.mp4 │ 11 等待唤醒机制的基本概念.mp4 │ 12 等待...

    教你完全理解ReentrantLock重入锁

    ReentrantLock重入锁,是实现Lock接口的一个类,也是在实际编程中使用频率很高的一个锁,支持重入性,表示能够对共享资源能够重复加锁,即当前线程获取该锁再次获取不会被阻塞。在java关键字synchronized隐式支持重...

    jnpr-eychen#jun_ppt#锁-重入锁(ReentrantLock)1

    公平和非公平选择这里提到一个锁获取的公平性问题,如果在绝对时间上,先对锁进行获取的请求一定先被满足,那么这个锁是公平的,反之,是不公平的。public void

    Java可重入锁的实现原理与应用场景

    ReentrantLock是一个可重入锁的实现类,可以手动控制锁的获取和释放。synchronized是Java语言的关键字,用于同步方法或代码块,但是synchronized也是一种可重入锁。 在使用可重入锁时,需要注意以下几点: * 可重...

    详解java并发之重入锁-ReentrantLock

    详解 Java 并发之重入锁-ReentrantLock Java 中的并发编程是一种复杂的技术,需要深入了解 Java 的并发机制和锁机制。ReentrantLock 是 Java 中的一种常用锁机制,它提供了一个可重入的锁机制,能够确保线程安全。...

    Java并发之ReentrantLock类源码解析

    ReentrantLock是Java并发包中的一种同步工具,它可以实现可重入锁的功能。ReentrantLock类的源码分析对理解Java并发机制非常重要。本文将对ReentrantLock类的源码进行详细分析,涵盖ReentrantLock的继承关系、构造...

    Java并发编程学习笔记

    可重入锁是Java.util.concurrent.locks包下的ReentrantLock类,支持公平锁和非公平锁,具有比synchronized更细粒度的控制。它提供tryLock()方法,可以在无法获取锁时立即返回,而不是等待。 3. **ThreadLocal**: ...

    redislock-基于redis的分布式可重入锁

    在Java中,ReentrantLock是内置的可重入锁,而在分布式环境中,我们可以利用Redis的特性来构建类似的机制。 Redis提供了`SETNX`(Set if Not eXists)命令,可以用于原子性地设置一个键的值,如果键不存在的话。这...

    Java多线程高并发篇(一)--重入锁

    在Java多线程高并发编程中,重入锁(ReentrantLock)是一个至关重要的概念,它提供了比Java内置锁(synchronized)更细粒度的控制,并且具有更高的可读性和可扩展性。本篇文章将深入探讨重入锁的相关知识点。 首先...

    ReentrantLock源码详解--公平锁、非公平锁

    ReentrantLock是一种重入锁,实现了Lock接口,能够对共享资源重复加锁,即当前线程获取该锁再次获取不会被阻塞。ReentrantLock的可重入性是通过继承AQS(AbstractQueuedSynchronizer)实现的。 ReentrantLock的主要...

    ReentrantLock源码的使用问题详解.docx

    ReentrantLock,可重入锁,是Java并发编程中一个重要的锁实现,它提供了比synchronized更高级别的控制能力,包括公平性和非公平性选择。本文将深入探讨ReentrantLock的原理,特别是其公平锁与非公平锁的概念,以及...

    数据结构面试题及正确答案

    - **重入锁 ReentrantLock**:提供互斥访问,可重入,适用于需要精确控制锁定范围的场景。 - **读写锁 ReadWriteLock**:读取锁允许多线程共享读,写入锁独占写,提高了并发性能。 - **Condition**:配合锁使用,...

Global site tag (gtag.js) - Google Analytics