java面试_锁

Java 锁

什么是锁?
在计算机科学中,锁(lock)或互斥(mytex)是一种同步机制,用于在许多执行线程的环境中强制对资源的访问限制。锁旨在强制实施互斥排他,开发控制策略

锁的概念
1.锁开销:指的是锁占用内存空间,cpu初始化和销毁锁,获取和释放锁的时间。程序使用的锁越多,响应的锁开销越大
2.锁竞争:是指一个进程或线程试图获取另一个进程或线程持有的锁,就会发生锁竞争,锁粒度越小,发生锁竞争的可能性就越小。
3.死锁: 至少两个任务中的每一个都等待另一个任务持有的锁的情况锁粒度是衡量锁保护的数据量大小,通常选择粗粒度的锁(锁的数量少,每个锁保护大量的数据),在当单进程访问受保护的数据时锁开销小,但是当多个进程同时访问时性能很差。因为增大了锁的竞争。相反,使用细粒度的锁(锁数量多,每个锁保护少量的数据)增加了锁的开销但是减少了锁竞争。例如数据库中,锁的粒度有表锁、页锁、行锁、字段锁、字段的一部分锁

死锁的产生以及如何避免
Java中死锁最简单的情况是:一个线程T1持有锁L1并且申请获得锁L2,而另一个线程T2持有锁L2并且申请获得锁L1,就是说线程T1在等在线程T2释放锁L2,而线程T2在等在线程T1释放锁L1,这这样就导致T1和T2陷入永久的死循环,导致了死锁。
== 造成死锁的原因有以下四条:==
1.互斥条件:进程要求对所分配的资源进行排他性控制,即在一段时间内某资源仅为一个进程所占有。此时若有其他进程请求该资源,则请求进程只能等

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值