当前位置: 首页 > article >正文

什么是可重入,什么是可重入锁? 它用来解决什么问题?

可重入

可重入是多线程并发编程里面一个比较重要的概念,简单来说,就是在运行的某个函数或者代码,因为抢占资源或者中断等原因导致函数或者代码的运行中断,等待中断程序执行结束后,重新进入到这个函数或者代码中运行,并且运行结果不会受到影响,那么这个函数或者代码就是可重入的。

可重入锁

而可重入锁,简单来说就是一个线程如果抢占到了互斥锁资源,在锁释放之前再去竞争同一把锁的时候,不需要等待,只需要记录重入次数。在多线程并发编程里面,绝大部分锁都是可重入的,比如 Synchronized、ReentrantLock 等,但是也有不支持重入的锁,比如 JDK8 里面提供的读写锁StampedLock。 
 public static  synchronized void lock1(){
        // ThreadX 获取到了lock1中的Synchronized锁,
        // 再次调用另外一个加同步锁的lock2()方法
        lock2();
}
public static synchronized void lock2(){
        //doSomething
}
锁的可重入性,主要解决的问题是避免线程死锁的问题。 因为一个已经获得同步锁 X 的线程,在释放锁 X 之前再去竞争锁 X 的时候,相当于会出现自己要等待自己释放锁,这很显然是无法成立的。

http://www.kler.cn/a/106331.html

相关文章:

  • 【java】链表:判断链表是否成环
  • SpringBoot集成itext导出PDF
  • 【Linux系统编程】第四十六弹---线程同步与生产消费模型深度解析
  • 浪浪云轻量服务器搭建vulfocus网络安全靶场
  • 图形几何之美系列:二维凸包艺术赏析
  • Spring中的Bean
  • 泛微OA之获取每月固定日期
  • LabVIEW更改图像特定部分的颜色
  • 【API篇】十、生成Flink水位线
  • 3DMAX金属屋顶墙面铺设插件使用方法
  • 自动驾驶感知算法面经(20+)
  • toluaframework中C#怎么调用Lua的方法以及无GC方法
  • 大数据平台架构及规划
  • 计算机网络【CN】IPV4报文格式
  • 创纪录的1亿RPS DDoS攻击利用HTTP/2快速重置漏洞
  • 49.Redis缓存设计与性能优化
  • 关于网络安全运营工作与安全建设工作的一些思考
  • 番外8.2 --- 后续
  • Linux 内核的 current
  • EtherNet Ip工业RFID读写器与欧姆龙PLC 配置示例说明
  • 【软件教程】如何用C++检查TCP或UDP端口是否被占用
  • 网工内推 | 急招网工,思科、华为认证优先,法定节假日三薪
  • mysql GRANT创建用户授权
  • 2023 年 的 DBA 有哪些变化?
  • zk-Bench:SNARKs性能对比评估工具
  • 【Linux】Linux+Nginx部署项目