在编写线程安全类时,我们在代码中的两个地方使用synchronized
关键字,
1.方法级同步
2.同步区 block
据我所知,像 Lock
(java.util.concurrent.locks.Lock
) 这样的接口(interface)可以用来代替 synchronized
仅在 block 级别,但不在方法级别。或者有什么办法吗?
我并没有真正需要它,只是好奇,因为我听说 Lock
可以替代 synchronized
的讨论。
public class SampleClass {
public synchronized void method(){
.....
}
}
最佳答案
没有像synchronized
那样的“在方法开始时获取锁,并在方法结束时释放它”的特殊语法。
当然,您可以自己这样做:
public void method() {
lock.lock();
try {
// rest of the method
} finally {
lock.unlock();
}
}
关于java - 方法级别的synchronized可以用Lock代替吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39983070/