java - 在 Java 中实现互斥锁

标签 java multithreading mutex

我有一个多线程应用程序(准确地说是 Tomcat 中的 Web 应用程序)。其中有一个类,几乎每个线程都会有自己的实例。在该类中,一个方法中有一段代码,一次只能有一个线程(用户)执行。我的研究使我相信我在这里需要的是一个互斥体(它似乎是一个计数为 1 的信号量)。

所以,经过更多的研究,我认为我应该做的是以下几点。重要的是要注意我的锁定对象是静态的。

我做得对吗?

public Class MyClass {
  private static Object lock = new Object();
  public void myMethod() {
    // Stuff that multiple threads can execute simultaneously.
    synchronized(MyClass.lock) {
      // Stuff that only one thread may execute at a time.
    }
  }
}

最佳答案

在您的代码中,myMethod 可以在任何线程中执行,但一次只能在一个线程中执行。这意味着永远不会有两个线程同时执行此方法。我认为这就是您想要的 - 所以:是的。

关于java - 在 Java 中实现互斥锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8778335/

相关文章:

java - 在 Mockito 中设置后重置模拟的正确替代方法是什么?

java - 如何编写简单的公平信号量?

java - 哪些方法可以减少 JDBC 线程暂停?

multithreading - 如何使用Grails 2.3.11在后台运行线程

c++ - 设置一个等于自身的变量实际上在 C++ 中执行吗?

c++ - 非递归互斥所有权

java - 为什么我们不能用 Java 文件而不是 .drl 文件来编写业务规则?

java - 在 Java 中使用列表

multithreading - 并行中的物理内核与虚拟内核

MSBuild - 如何创建 "critical section"