java - 这是在 Java 中创建锁的可接受方式吗?

标签 java multithreading concurrency

<分区>

我遇到了今天有人在工作中实现的这个逻辑,以这种方式创建锁感觉不对。你们对此有更好的解决方案吗?不在 myObj 上使用同步块(synchronized block)的问题是它可以为空。还有其他建议吗??

 public class myClass {
    private Object myObj;
    private Object lock = new Object();

    public void method1() {
        synchronized( lock ) {
            // has logic to read myObj
        }
    }


    public void method2()  {
        synchronized( lock ) {
            // has logic to update myObj
        }
    }
}

最佳答案

看起来很适合我。我还会将 final 添加到锁声明中,以确保它不会无意中被更改:

private final Object lock = new Object();

关于java - 这是在 Java 中创建锁的可接受方式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20130678/

相关文章:

java - 我正在尝试在 ArrayList 中放置一个标记

java - 如何在 Java 中查询 OrientDB 数据库的顶点?

java - WebCrawler stop方法逻辑【并发实践7.2.5】

java - Android runOnUiThread线程安全

java - 无法使用@MapsId 和@Id 进行查询,但仅适用于@Id

java sql列插入

c++ - 在多线程应用程序中使用 vector

c++ - 与宽松的原子同步

java - 为什么我的 Java 程序不将 String 写入文件?

c#为什么要把对象放在lock语句中