zbb20180913 java thread JDK-Lock锁

Posted Daryll

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zbb20180913 java thread JDK-Lock锁相关的知识,希望对你有一定的参考价值。

JDK1.5-Lock

jdk1.5 之后,并发包中新增了 Lock 接口(以及相关实现类)用来实现锁功能,Lock 接口提供了与 synchronized 关键字类似的同步功能,但需要在使用时手动获取锁和释放锁。

Lock写法

Lock lock  = new ReentrantLock();

lock.lock();

try{

//可能会出现线程安全的操作

}finally{

//一定在finally中释放锁

//也不能把获取锁在try中进行,因为有可能在获取锁的时候抛出异常

  lock.ublock();

}

 

 

Lock 接口与 synchronized 关键字的区别

Lock 接口可以尝试非阻塞地获取锁 当前线程尝试获取锁。如果这一时刻锁没有被其他线程获取到,则成功获取并持有锁。
Lock 接口能被中断地获取锁 与 synchronized 不同,获取到锁的线程能够响应中断,当获取到的锁的线程被中断时,中断异常将会被抛出,同时锁会被释放。

Lock 接口在指定的截止时间之前获取锁,如果截止时间到了依旧无法获取锁,则返回。

 

Condition用法

 Condition的功能类似于在传统的线程技术中的,Object.wait()和Object.notify()的功能。

代码

Condition condition = lock.newCondition();

res. condition.await();  类似wait

res. Condition. Signal() 类似notify


以上是关于zbb20180913 java thread JDK-Lock锁的主要内容,如果未能解决你的问题,请参考以下文章

zbb20180929 thread java并发编程之Condition

zbb20171214 java 获取classpath路径

zbb20180929 thread notify()与notifyAll()的区别

zbb20180929 thread 自旋锁阻塞锁可重入锁悲观锁乐观锁读写锁对象锁和类锁

zbb20180827 java获取html内容

mongodb 临时记录20180913