java 锁(一):java主流锁

最近看完了美团2018年出的后台技术分享,其中有一章叫“java不得不说的锁事”,看完了觉得受益匪浅,所以在这里记录一下(纯记录,内容全部来自于美团技术团队,不用于盈利,侵删)。另外,现在在看阿里出的《码出高效》,里面有一节叫“并发与多线程”,对锁的理解和使用角度与美团又有很大的不同,等看完了再来更新~~~

线程要不要锁住同步资源?

锁住:悲观锁
不锁住:乐观锁

锁住同步资源失败,线程要不要阻塞?

阻塞:
不阻塞:自旋锁
与适应性自旋锁

多个线程竞争同步资源的流程细节有没有区别?

不锁住资源,多个线程中只有一个能修改资源成功,其他线程会重试:无锁
同一个线程执行同步资源时自动获取资源:偏向锁
多个线程竞争同个资源时,没有获取资源的线程自旋等待锁释放:轻量级锁
多个线程竞争同步资源时,没有获取资源的线程阻塞等待唤醒:重量级锁

多个线程竞争锁时要不要排队?

排队:公平锁
先尝试插队,插队失败再排队:非公平锁

一个线程中的多个流程能不能同时获取同一把锁?

能:可重入锁
不能:非可重入锁

多个线程能不能共享一把锁?

能:共享锁
不能:排他锁

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。