搜索
写经验 领红包
 > 育儿

java并发锁(javalock方法)

导语:Java并发编程-Lock对象了解下

本章介绍使用显示的Lock锁来处理并发问题,Lock对象在java.util.concurrent.locks包中,Lock对象必须显示的创建、锁住对象(locked)、释放锁(unlocked)。本文参考think in java 。

我们将上节生成偶数的方法使用显示的Lock,代码截图如下:

程序分析:

1、使用Lock.lock()进行手动加锁,Lock.unlock()进行手动解锁

2、使用Lock时候注意使用固定的try-finally模板,这种方式可以保证锁总是能释放

3、return 语句包含在try里面,不然可能会线程释放锁,值还没返回,其他的线程进来修改了值

Lock尝试获取锁

下面的代码使用Lock可以尝试获取锁,或者指定的时间内尝试获取锁,不用一直阻塞,下面是代码的截图:

输出结果:

程序分析:

1、tyrLock()试着获取锁,获取不到也没事,程序继续进行

2、tryLock(2,TimeUnit.SECONDS),表示试着获取2秒内获取锁,获取不到也没事,程序继续往下面执行

3、后台线程进行锁住不放,最后两句al.untimed()和al.timed()的时候就会出现获取不到锁,程序继续往后执行

Lock和synchronized 区别总结?

1、synchronized抛出异常后给到指定的未捕获异常处理器处理,程序不能控制一些清理得动作。但是使用Lock就可以在finally中清理

2、Lock可以尝试着获取锁,或者指定的时间内获取锁,用于更复杂得情况比较适用

本文内容由小姬整理编辑!