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

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

可重入

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

可重入锁

而可重入锁,简单来说就是一个线程如果抢占到了互斥锁资源,在锁释放之前再去竞争同一把锁的时候,不需要等待,只需要记录重入次数。在多线程并发编程里面,绝大部分锁都是可重入的,比如 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.lryc.cn/news/208468.html

相关文章:

  • Unity报错:Microsoft Visual C# Compiler version
  • 2023年下半年WSK-PETS5考试内容大纲及题型解析
  • 【24种设计模式】单例模式(Singleton Pattern)
  • shell算数运算指令、
  • 数字孪生与智慧城市:开启未来智慧生活
  • jenkins实践篇(1)——基于分支的自动发布
  • Microsoft.Extensions 简介
  • k8s 金丝雀发布与声明式管理
  • 百度Comate SaaS版本正式发布,助力开发者加速研发过程
  • 8类放球问题
  • 【APP VTable】和市面上的 Table 组件一样,都是接收表格[] 以及数据源[]
  • 深度学习 anaconda 安装问题
  • 为什么现在学Rust编程是最好时机?
  • Java——Spring的控制反转(一文详解IOC)
  • Android Glide限定onlyRetrieveFromCache取内存缓存submit超时阻塞方式,Kotlin
  • tinymce输入框怎么限制只输入空格或者回车时不能提交
  • 时间、空间复杂度的例题详解
  • Ubuntu22.04 搭建 OpenHarmony 命令行开发环境
  • 10.27 知识总结(前端)
  • 操作系统(02326)考试题库
  • LeetCode题:70爬楼梯,126斐波那契数
  • VTK OrientationMarker 方向 三维坐标系 相机坐标轴 自定义坐标轴
  • 工控安全与网络安全有什么不同?
  • 性能测试工具:Jmeter介绍
  • Golang Struct 继承的深入讨论和细节
  • Android11分区介绍
  • goland无法调试问题解决
  • 关于近期IP-Guard新版本客户端重复发送邮件的问题处理说明
  • linux java 启动脚本
  • Node.js 的 CommonJS ECMAScript 标准用法