Lock lock = new ReentrantLock();
// 不要将获取锁的过程写在try块中,因为如果在获取锁时发生了异常,异常抛出的同时也会导致锁无故释放
lock.lock();
// 错误代码:代码执行到这里,如果抛出异常的代码没有在try块中,不会释放锁
// int i = 1/0;
try {
// 正确代码:先执行catch块中逻辑,再执行finally块中逻辑
int i = 1/0;
} catch (Exception e) {
System.out.println("================");
} finally {
// 保证在获取到锁之后,最终能够被释放
System.out.println("+++++++++++++");
lock.unlock();
}
正确使用lock锁
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- Lock锁的使用 虽然我们可以理解同步代码块和同步方法的锁对象问题,但是我们并没有直接看到在哪里加上了锁,在哪里释...
- 锁要实现的三个目标: 相互排斥。在任何给定时刻,只有一个客户端可以持有锁。 无死锁。最终,即使锁定资源的客户端崩溃...
- 多核编程是随着现代处理机的发展而产生的一种新的编程模型。涉及多核并行编程的业务场景有很多,它们利用程序模块的可异步...
- 1、简介:“手动”或“链锁定”,synchronized不容易实现,Lock容易,如:您获取节点A的锁定,然后获取...