// 使用 synchronized 关键字的示例
public class SynchronizedExample {
private int count = 0;
// synchronized 方法
public synchronized void increment() {
count++;
}
// synchronized 块
public void incrementWithBlock() {
synchronized (this) {
count++;
}
}
}
// 使用 Lock 接口的示例
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class LockExample {
private int count = 0;
private final Lock lock = new ReentrantLock();
public void increment() {
lock.lock(); // 获取锁
try {
count++;
} finally {
lock.unlock(); // 释放锁
}
}
}
Synchronized 示例:
synchronized 是 Java 中的一个关键字,可以用于方法或代码块。synchronized 方法或代码块时,它会自动获取该对象的内置锁(intrinsic lock),其他线程必须等待锁被释放才能进入。synchronized 方法和代码块在使用上相对简单,但灵活性较低。Lock 示例:
Lock 是一个接口,提供了比 synchronized 更加灵活的锁定机制。Lock 需要显式地调用 lock() 方法获取锁,并且在使用完锁后需要调用 unlock() 方法释放锁。Lock 提供了更多的功能,例如尝试获取锁、定时获取锁等,适用于更复杂的并发控制场景。上一篇:java中map用法
下一篇:java实例化什么意思
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站