当前位置: 首页 > 知识库问答 >
问题:

在Java中“reentrantlock”是什么意思?

叶华皓
2023-03-14

共有1个答案

段铭晨
2023-03-14

可重入性意味着锁是在每个线程而不是每个调用的基础上获取的。

这是一个误导性的定义。这是真的(有点),但它没有抓住真正的重点。

重入意味着(在一般的CS/IT术语中),您做了某件事,当您还在做它的时候,您又做了一次。在锁的情况下,这意味着在单个线程上执行如下操作:

    null
Object lock = new Object();
...
synchronized (lock) {
    ...
    doSomething(lock, ...)
    ...
}

public void doSomething(Object lock, ...) {
    synchronized (lock) {
        ...
    }
}

使用可重入锁的好处是,您不必担心由于意外获得已持有的锁而失败的可能性。缺点是,您不能假设调用的任何内容都不会改变锁设计用于保护的变量的状态。然而,这通常不是一个问题。锁通常用于防止其他线程进行并发状态更改。

所以我不需要考虑死锁?

是的。你有。

 类似资料:
  • 问题内容: 重入意味着锁定是在每个线程而不是每个调用的基础上获得的。 由于内在锁由线程持有,这是否意味着线程运行一次等于调用基础? 谢谢,这似乎意味着:在线程中,如果我在调用function的流程函数时获得了锁,并且还需要一个锁,那么将会有一个可重入的过程。在Java中,这种现象是按线程获取的,因此我不需要考虑死锁吗? 问题答案: 重入意味着锁定是在每个线程而不是每个调用的基础上获得的。 这是一个

  • 问题内容: 我已经看到了声明,接口和类 这是什么意思? 问题答案: 没有证据,我相信您在谈论Java的泛型支持… 泛型允许您抽象类型 在Java 5之前,很难提供能够支持多种不同类型的Objects的类而不必为每种特定情况编写代码,因此人们通常会这样做。 这导致在运行时做出许多困难的选择,您必须进行运行时检查以查看是否有可能将给定的Object强制转换为可用类型…例如 现在,这已经很明显了,但是如

  • 我发现这段代码是为了在SO post中找到重复的代码。但我不明白这行是什么意思

  • 问题内容: 我正在学习上面的代码,它告诉我什么是自省者和什么是stopClass。但是我不明白这是什么意思?`for (PropertyDescriptor prop props) for(i=0;i<100;i++)` 有人可以帮忙进一步解释吗?谢谢! 问题答案: 这就是 Java 5中引入的每种循环语法。

  • 问题内容: 我的问题如上所述。抱歉,可能是重复的,但最后找不到一个示例。 为什么不只使用它作为参数? 问题答案: 是可参数化的类,因此可以使用where 类型的语法。通过编写,您可以声明一个可以是任何类型的对象(是通配符)。该类型是包含类元信息的类型。 通过指定特定类型来引用泛型类型始终是一种好习惯,这是通过尊重您的习惯(您知道可参数化的)来使用的,但并不限制参数具有特定类型。 有关泛型和通配符的

  • 问题内容: 我有一个程序试图缩小到所需的数量。我得到的输出是。 在Java 中是什么意思? 问题答案: “ NaN”代表“不是数字”。如果浮点运算具有一些输入参数,导致该运算产生一些未定义的结果,则会生成“ Nan”。例如,0.0除以0.0在算术上是不确定的。负数的平方根也是不确定的。