首页 > 代码库 > <Java><Multi-thread><Lock interface>
<Java><Multi-thread><Lock interface>
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...
<Java><Multi-thread><Lock interface>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。