synchronized 和 reentrantlock
时间: 2023-04-27 12:04:36 浏览: 114
ReentrantLock与synchronized
synchronized 和 reentrantlock 都是 Java 中用于实现线程同步的机制。
synchronized 是 Java 中最基本的同步机制,它可以用于修饰方法或代码块,保证同一时刻只有一个线程可以访问被 synchronized 修饰的代码。synchronized 的缺点是它是非公平锁,即当多个线程同时竞争锁时,不保证哪个线程会获得锁。
reentrantlock 是 JDK 5 中引入的新的同步机制,它也可以用于保证同一时刻只有一个线程可以访问被锁定的代码。与 synchronized 不同的是,reentrantlock 是可重入锁,即同一个线程可以多次获得同一个锁,而不会被阻塞。此外,reentrantlock 还支持公平锁和非公平锁两种模式,可以根据需要选择。但是,reentrantlock 的使用相对于 synchronized 更加复杂,需要手动进行加锁和解锁操作,容易出现死锁等问题。
阅读全文