我有一个多线程应用程序(确切地说是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,multithreading,mutex
来源: https://codeday.me/bug/20190726/1540457.html