gpt4 book ai didi

java - 在CyclicBarrier或CountDownLatch上进行高速缓存刷新,例如使用synced关键字时

转载 作者:行者123 更新时间:2023-12-03 12:52:54 25 4
gpt4 key购买 nike

有什么方法可以确保java在CyclicBarrier或CountDownLatch允许我们继续执行之前(如synced关键字所做的那样)在不使用synced关键字的情况下刷新已完成的写缓存吗?

最佳答案

我认为API已经保证了这一点。

http://download.oracle.com/javase/6/docs/api/java/util/concurrent/CyclicBarrier.html

内存一致性影响:调用await()之前的线程中的操作发生在屏障操作的一部分之前,而其他操作又发生在其他线程中的相应await()成功返回之后的操作之前。

http://download.oracle.com/javase/6/docs/api/java/util/concurrent/package-summary.html#MemoryVisibility

只有在写入操作发生之前(在读取操作之前),才能保证一个线程的写入结果对另一线程的读取是可见的。 ...调用CyclicBarrier.await之前的操作发生在屏障操作执行的操作之前,而通过屏障操作执行的操作发生在其他线程从相应的await成功返回之后的操作之前。

这表示

thread 1                  thread 2

write x1; write x2
barrier.await(); barrier.await();
read x2 read x1

无需其他同步; read x2将看到 write x2的结果

关于java - 在CyclicBarrier或CountDownLatch上进行高速缓存刷新,例如使用synced关键字时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7493140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com