锁
cenghaihengliu
这个作者很懒,什么都没留下…
展开
-
06-谈谈你对锁的理解?如何手动模拟一个死锁?
在并发编程中有两个重要的概念:线程和锁,多线程是一把双刃剑,它在提高程序性能的同时,也带来了编码的复杂性,对开发者的要求也提高了一个档次。而锁的出现就是为了保障多线程在同时操作一组资源时的数据一致性,当我们给资源加上锁之后,只有拥有此锁的线程才能操作此资源,而其他线程只能排队等待使用此锁。当然,在所有的面试中也都少不了关于“锁”方面的相关问题。 我们本课时的面试题是,如何手动模拟一个死锁?谈谈你对锁的理解? 典型回答 死锁是指两个线程同时占用两个资源,又在彼此等待对方释放锁资源,如下图所示: 死锁的代码演原创 2020-06-20 11:57:53 · 139 阅读 · 0 评论 -
05-synchronized 和 ReentrantLock 的实现原理是什么?它们有什么区别?
在 JDK 1.5 之前共享对象的协调机制只有 synchronized 和 volatile,在 JDK 1.5 中增加了新的机制 ReentrantLock,该机制的诞生并不是为了替代 synchronized,而是在 synchronized 不适用的情况下,提供一种可以选择的高级功能。 我们本课时的面试题是,synchronized 和 ReentrantLock 是如何实现的?它们有什么区别? 典型回答 synchronized 属于独占式悲观锁,是通过 JVM 隐式实现的,synchronize原创 2020-06-20 11:49:53 · 129 阅读 · 0 评论