Java并发工具类:Synchronized,ReentrantLock等实践示例
在Java编程中,理解和使用并发工具如synchronized
和ReentrantLock
是高效编程的重要部分。以下是这两种工具的实践示例:
- synchronized:
synchronized
是Java中最基本的同步机制,它保证同一时间只有一个线程访问特定对象。
public class SynchronizedExample {
private Object lock = new Object();
public void synchronizedMethod() {
synchronized (lock) { // 使用锁对象进行同步
System.out.println("This method is synchronized.");
}
}
public static void main(String[] args) {
SynchronizedExample example = new SynchronizedExample();
example.synchronizedMethod(); // 这个方法会被阻塞,直到获取到锁
}
}
- ReentrantLock:
ReentrantLock
是Java 1.5引入的一个更加灵活的锁机制。相比synchronized
,它提供了更多的控制和特性。
import java.util.concurrent.locks.ReentrantLock;
public class ReentrantLockExample {
private ReentrantLock lock = new ReentrantLock();
public void reentrantMethod() {
lock.lock(); // 获取锁
try {
System.out.println("This method is using a ReentrantLock.");
} finally {
// 无论是否发生异常,都需要在finally块中解锁
lock.unlock(); // 释放锁
}
}
public static void main(String[] args) {
ReentrantLockExample example = new ReentrantLockExample();
example.reentrantMethod(); // 这个方法不会阻塞,但需要手动获取和释放锁
}
}
总结:synchronized
适用于同步简单场景,而ReentrantLock
则提供了更多的控制,例如可以设置超时时间、公平性等。
还没有评论,来说两句吧...