Java Lock对象是否强制执行之前发生的关系?

Pet*_*eas 7 java multithreading locking memory-model happens-before

根据文档,Java在并发包中提供了一个Lock对象 provides more extensive locking operations than can be obtained using synchronized methods and statements.

除了互斥之外的同步方法/块,强制执行先发生关系,这确保一个线程对变量的更改对另一个线程可见.

使用Lock对象时是否会出现这种关系?对于所有平台,观察是否保证像同步块一样?

hag*_*wal 2

使用 Lock 对象时是否会出现这种关系?是否像所有平台的同步块一样保证观察?

是的,它确实。

有多种操作可以创建先发生关系,其中之一是同步(此处),Java 的锁对象也用于此目的。

从 Oracle 文档中了解 Java 的内存一致性属性。除了下面将在链接中突出显示的内容。

在下文中,“扩展这些保证”意味着内存一致性属性,例如“发生之前”关系。Lockclass 属于 的子包java.util.concurrent,因此它保证内存一致性属性,例如“happens-before”关系等。

java.util.concurrent 及其子包中所有类的方法将这些保证扩展到更高级别的同步。