1、java中,共享锁有哪些
Java 中,常见的共享锁包括读写锁(ReentrantReadWriteLock)和计数器(CountDownLatch、CyclicBarrier、Semaphore 等)等。
1)读写锁
读写锁是一种特殊的锁,它允许多个线程同时读取共享资源,但只允许一个线程写入共享资源。ReentrantReadWriteLock 是 Java 中实现读写锁的一种方式,它通过维护两个锁来实现读写锁的功能,即读锁和写锁。读锁可以同时被多个线程获取,而写锁只能被一个线程获取。
2)计数器
计数器是一种用于控制并发访问的同步工具,它允许多个线程并发地访问共享资源,但需要满足一定的条件才能继续执行。常见的计数器包括 CountDownLatch、CyclicBarrier 和 Semaphore。CountDownLatch 是一种基于计数的同步工具,它可以让一个或多个线程等待一个或多个事件的发生。CyclicBarrier 是一种栅栏同步工具,它可以让多个线程在同一个时间点上等待。Semaphore 是一种计数信号量,它可以控制同时访问共享资源的线程数量。
2、java 中,有哪些独占锁
ava 中常见的独占锁包括 synchronized、ReentrantLock 和 ReentrantReadWriteLock 的写锁等。它们的特点是同一时间只能有一个线程持有锁,其他线程无法访问被锁定的代码块或资源。
1)synchronized
synchronized 是 Java 中最基本的同步机制之一,它是一种独占锁,只能被一个线程持有。在 synchronized 关键字修饰的代码块或方法上,同一时刻只能有一个线程获得锁,其他线程需要等待获得锁的线程释放锁才能继续执行。
2)ReentrantLock
ReentrantLock 是 Java 中常见的独占锁实现之一,与 synchronized 相比,ReentrantLock 具有更高的灵活性和扩展性。ReentrantLock 可以设置公平锁和非公平锁,默认是非公平锁。ReentrantLock 还支持可重入锁,即一个线程可以多次获取同一个锁,而不会导致死锁。
3)ReentrantReadWriteLock
ReentrantReadWriteLock 是一种读写锁,读写锁允许多个线程同时读取共享资源,但只允许一个线程写入共享资源。在 ReentrantReadWriteLock 中,写锁是独占锁,即只能被一个线程持有,而读锁是共享锁,可以被多个线程同时持有。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。