在synchronized语句之外的代码语句是否是线程安全的?

时间:2017-05-25 02:44:28

标签: java multithreading synchronization thread-safety

public void addName(String name) {
    synchronized(this) {
        lastName = name;
        nameCount++;
    }
    nameList.add(name);
    doA();
    doB();
}

按照上面的java文档示例," nameList.add(name); doA(); doB();"是线程安全的吗?

1 个答案:

答案 0 :(得分:3)

没有。只有:

synchronized(this) { lastName = name; nameCount++; } 这里显示为线程安全。

但是,doA()和doB()可以有额外的锁定,但可能会被多次调用,这可能会产生意想不到的副作用。