Java并发编程:Lock和Condition使用示例
在Java并发编程中,Lock
和Condition
是两个重要的同步工具。下面分别给出它们的使用示例。
- Lock(锁):
ReentrantLock
是最常用的锁实现,它具有公平性和可重入性。
示例代码:
import java.util.concurrent.locks.ReentrantLock;
public class LockExample {
private final ReentrantLock lock = new ReentrantLock();
public void criticalSection() {
try {
// 获取锁
lock.lock();
// 执行临界区操作
System.out.println("Critical section is executing.");
// 释放锁
lock.unlock();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
LockExample example = new LockExample();
example.criticalSection();
}
}
- Condition(条件):
Variable
类是与条件相关的变量。ConditionalVariable
和Semaphore
是实现条件的两种方式。
示例代码:
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class ConditionExample {
private final Lock lock = new ReentrantLock();
private final Condition condition = lock.newCondition();
public void criticalSection() throws InterruptedException {
lock.lock();
try {
// 设置条件
condition.signalAll();
System.out.println("Signalling all threads.");
// 等待条件
while (!condition.await(1, TimeUnit.SECONDS)))) {
System.out.println("Waiting for condition signal.");
}
System.out.println("Condition has been signalled and thread is waiting.");
} finally {
lock.unlock();
}
}
public static void main(String[] args) {
ConditionExample example = new ConditionExample();
example.criticalSection();
}
}
以上示例展示了如何使用Lock
和Condition
进行Java并发编程。
还没有评论,来说两句吧...