1. synchronized锁:使用synchronized关键字对共享资源进行加锁,同时只能有一个线程访问,其他线程需要等待锁释放后才能访问。synchronized锁存在的问题是无法中断等待线程、无法设置超时时间。

  2. ReentrantLock锁:java.util.concurrent.locks.ReentrantLock是Java SE 5引入的新锁机制,提供了与synchronized类似的功能,但是更加灵活。它支持可重入锁、可响应中断、可设置超时等特性。ReentrantLock还支持公平锁和非公平锁两种模式,公平锁保证线程获取锁的顺序与线程等待锁的顺序一致。

  3. ReadWriteLock锁:java.util.concurrent.locks.ReadWriteLock是一个读写锁,它允许多个线程同时读共享资源,但只允许一个线程写共享资源。ReadWriteLock机制分为读锁和写锁,读锁是共享锁,多个线程可以同时获取读锁,写锁是独占锁,只有一个线程可以获取写锁。因此,使用ReadWriteLock能够提高读操作的并发性,而写操作仍然是互斥的。

java中的三种锁

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

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