private static final Object STATIC_LOCK = new Object();
private final Object lock = new Object();
public void doSomething() {
synchronized (STATIC_LOCK) {
// At most, one thread can enter this portion
}
synchronized (lock) {
// Many threads can be here at once, but only one per object of the class
}
}
3 回答
取决于它们将在何种上下文中使用 . 如果您想要按实例锁定,请将
static
留下 . 如果您想要每类锁定,请使用static
. 确实保持它final
.简单回答,没有 . 答案很长,这取决于你想要什么 .
话虽如此,我建议你看看java.util.concurrent.locks中提供的锁 . 使用java.util.concurrent.locks.Lock,您可以执行以下操作:
没有
在Java中,可以使用非静态成员作为锁 .