> 育儿
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可以尝试着获取锁,或者指定的时间内获取锁,用于更复杂得情况比较适用
本文内容由小姬整理编辑!