synchronized与 ReentrantLock
1.synchronized是Java原生提供的用于在多线程环境中保证同步的关键字,底层是通过修改对象头中的MarkWord来实现的。
2.ReentrantLock是Java语言层面提供的用于在多线程环境中保证同步的类,底层是通过原子更新状态变量state来实现的。
3. 加锁/解锁方式:
ReentrantLock需要手动加锁、解锁,使用try..finally..保证锁能够释放 ,synchronized 手动加锁,无需刻意解锁
公平锁ReentrantLock支持,new ReentrantLock(true) synchronized 不支持
条件锁
ReentrantLock: condition.await(),condition.signal(),condition.signalAll()
synchronized: obj.wait(),obj.notify(),obj.notifyAll()
领取专属 10元无门槛券
私享最新 技术干货