【发布时间】:2012-01-08 14:29:24
【问题描述】:
我有一个多线程应用程序(确切地说是 Tomcat 中的一个网络应用程序)。其中有一个类,几乎每个线程都有自己的实例。在该类中,一个方法中有一段代码,一次只有一个线程(用户)可以执行。我的研究使我相信我在这里需要的是一个互斥体(它似乎是一个计数为 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来达到同样的效果。
标签: java multithreading mutex