我有一个多线程应用程序(确切地说是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.
}
}
}
ReentrantLock
来达到同样的效果。 - fge