Lock锁

2>lock()锁
1>>重入锁

lock锁和synchronized的区别:
  1>synchronized 是内部锁,自动化的上锁与释放锁,而lock是手动的,需要人为的上锁和释放锁,lock比较灵活,但是代码相对较多
  2>lock接口异常的时候不会自动的释放锁,同样需要手动的释放锁,所以一般写在finally语句块中,而synchronized则会在异常的时候自动的释放锁
3>lock超时获取锁:在指定的截止时间之前获取锁,如果截止时间到了仍旧无法获取锁,则返回.

boolean tryLock(long time , TimeUnit unit) throws InterruptedException
4>lock尝试非阻塞的获取锁:当前线程尝试获取锁,如果这一时刻没有被其他线程获取到,则成功获取并持有锁。boolean tryLock()
5>lock能被中断的获取锁:获取到锁的线程能够响应中断,当获取到锁的线程被中断时,中断异常将被抛出,同事释放锁。void lockInterruptibly() throws InterriptedException


Lock接口定义了锁的获取和释放,如下:


image.png

你可能感兴趣的:(Lock锁)