Overview
- 介绍java的lock interface.
Motivation
- java拥有像synchronized这样的内置锁,那为什么还需要lock这样的外置锁呢?
- 首先,性能不是选择synchronized或lock的原因,因为jdk6中synchronized的性能已经和lock相差不大。
- 一般,选择lock是基于lock拥有的以下几个优点(内置锁不具备):
- 当获取锁时可以有一个等待时间,不会无期限等待下去;
- 当获取不到锁时,能够响应中断;
- 可以在多读少写的应用场景中,提高性能;
- 可以在获取不到锁时,立即返回false,获取到锁时返回true。
Lock Interface
-
public interface Lock{ void lockInterruptibly() throws InterruptedException; boolean tryLock(); boolean tryLock(long time, TimeUnit unit) throws InterruptedException; void unlock(); Condition newCondition(); }
- 其中,
- lockInterruptibly()表面加锁时,当前拥有锁的线程可以被中断;
- tryLock()则用于尝试获取锁,能获取则返回true,否则返回false;
- tryLock(long time, TimeUnit unit)与tryLock类似,只是会尝试一段时间;
- unlock()用于拥有锁的线程释放锁。
- TBD...
时间: 2024-12-25 14:23:22