java - 方法级别的synchronized可以用Lock代替吗?

标签 java concurrency

在编写线程安全类时,我们在代码中的两个地方使用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/

相关文章:

java - 使用 [ :punct:] function in java 的正则表达式

java - Thread start() 和 Runnable run() 有什么区别

Java多线程: Fast alternative to AtomicInteger wanted

java - 如何访问Java数组中的第一列数据并分配给另一个变量?

java - 在eclipse中增加服务器超时

java - ModelMap 是空的吗?

java - 获取定时任务的结果

concurrency - Erlang 中的 PID 列表

MySQL查询有时会死锁

java - 在 SWT 中更改组合框下拉菜单的方向