gpt4 book ai didi

Java Atomicity & 一个好的比较和交换框架?

转载 作者:行者123 更新时间:2023-11-29 10:03:49 25 4
gpt4 key购买 nike

你们认为这是一个很好的原子操作通用框架吗?您还认为关于 Java 应用程序,单个字节代码是原子的说法是否正确,因为没有办法使用单个 JVM 一次执行多个字节代码?所以如果 if else 有一个单字节代码,那么这个 if else 指令就是原子的?

// CAS, Compare and Swap
public abstract class CASOperation<T> {

protected T valueAtStart;

public CASOperation(){
valueAtStart = objectToReview();
}

public void exec(){
synchronized(this){
while(!valueAtStartEqualsTheCurrent()){
valueAtStart = objectToReview();
}
execImp();
}
}

private boolean valueAtStartEqualsTheCurrent() {
if (objectToReview().equals(valueAtStart)){
return true;
} else {
return false;
}
}

abstract protected T objectToReview();

abstract protected void execImp();

它实际上是一个比较和执行框架,所以在检查原始捕捉值没有改变之后我们执行一些代码块。

最佳答案

我只会使用 java.util.concurrent.AtomicReference除非您真的需要完整的相等性检查而不是简单的==

compareAndSet返回一个值,说明该值是否为预期值,因此您可以有条件地执行其他代码。

在同步块(synchronized block)中执行抽象方法听起来像是一项具有潜在风险的业务 - 没有指示或限制可能需要多长时间。

这样说:我认为,除非我知道特定要求使用类似于您提议的框架的东西,否则我会坚持使用 java.util.concurrent 中的类型。原子的

关于Java Atomicity & 一个好的比较和交换框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14771174/

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