gpt4 book ai didi

java - 混合 volatile 和 synchronized 作为读写锁

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:21:26 24 4
gpt4 key购买 nike

考虑一个原始类型变量,有很多线程读取和一些线程写入,下面的代码能正常工作吗?

如果会,它提供的性能是否优于 1)。在所有方法上声明同步; 2).使用显式 ReadWriteLock?

这是一个常见的模式吗?如果不是,这种情况通常使用什么模式?

目前这对我来说效果很好,但我觉得同时使用 volatile 和 synchronized 有点多余。

private volatile int value = 1;

public void func1()
{
if (value == 1) {
// do something
}
}

public void func2()
{
if (value == 2) {
// do something
}
}

public void func3()
{
if (value == 3) {
// do something
}
}

public synchronized void increase()
{
if (value < 10) value++;
}

public synchronized void decrease()
{
if (value > 0) value--;
}

最佳答案

是的,这很常见,至少在某种程度上是这样:)

您正在使用的模式在这篇 IBM 文章中有所描述 -> http://www.ibm.com/developerworks/java/library/j-jtp06197/index.html

(模式 #5,廉价的读写锁技巧)

关于java - 混合 volatile 和 synchronized 作为读写锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4289837/

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