平常使用的锁有很多种,包括以下几种:

  1. 'synchronized' 锁:是 Java 中最常用的锁,可以用于方法或代码块上,保证同一时间只有一个线程可以执行被锁定的代码。

  2. 'ReentrantLock':是 Java 中的可重入锁,可以实现与 'synchronized' 相同的功能,但具有更高的灵活性和扩展性。

  3. 'ReadWriteLock':是一种读写锁,允许多个线程同时读取共享数据,但只允许一个线程写入共享数据。

  4. 'LockSupport':提供了线程阻塞和唤醒的功能,可以用于实现自定义的锁。

  5. 'AtomicInteger':是一种原子类,可以保证对变量的操作是原子性的,可以用于实现线程安全的计数器。

'synchronized' 底层原理是通过字节码指令 monitorenter 和 monitorexit 来实现的。当线程进入 'synchronized' 代码块时,会尝试获取对象的监视器锁(monitor),如果锁没有被其他线程占用,则获取锁成功,执行代码块中的内容;如果锁被其他线程占用,则线程进入阻塞状态,直到获取到锁为止。当线程执行完 'synchronized' 代码块后,会释放锁,其他线程可以继续竞争获取锁。


原文地址: https://www.cveoy.top/t/topic/paA4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录