gpt4 book ai didi

java - java 中相当于 C# 的 Monitor 类是什么?

转载 作者:行者123 更新时间:2023-12-02 02:18:48 25 4
gpt4 key购买 nike

在 C# 中,当我这样做时

lock(this)
{
//do something
}

它的简写是:

Monitor.Enter(this);
try
{
//do something
}
finally
{
Monitor.Exit(this);
}

那java呢?是

synchronized(this) {
//do something
}

也是某些东西的缩写? java 中是否还有 System.Threading.Monitor 类的等效项?

最佳答案

在Java中有:

  • 一个同步 block :

    synchronized(this) {
    //do something
    }
  • 同步方法:

    public synchronized void someMethod() {
    //do something
    }
  • 每个对象都有的wait()notify()notifyAll()方法。当线程拥有该对象的监视器时,必须调用它们,换句话说,从同步方法或 block :

    public synchronized void waitForOtherTHreadToSetTheCondition() {
    while(!condition) {
    try {
    wait();
    } catch (InterruptedException e) {}
    }
    }

    public synchronized setCondition() {
    condition = true;
    notifyAll();
    }
  • a Lock接口(interface)及其子类:

        Lock l = ...;
    l.lock();
    try {
    // access the resource protected by this lock
    } finally {
    l.unlock();
    }
  • java.util.concurrent 包中的许多其他有用的类,例如 Semaphore , SynchronousQueue , CountDownLatch

回答您的问题“synchronized 也是某种东西的简写吗?”

没有。 Java 中没有与 System.Threading.Monitor 等效的东西。

关于java - java 中相当于 C# 的 Monitor 类是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48858006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com