`
atell
  • 浏览: 161632 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

并发包compareAndSet的疑惑?为什么没有对应的compare,If Not Equals,Then Set的方法呢?

 
阅读更多
public final boolean compareAndSet(boolean expect,boolean update)
如果当前值 == 预期值,则以原子方式将该值设置为给定的更新值。

  并发包的这个方法,看起来意思是compare,If Equals,Then Set

我有个疑惑,为什么没有对应的compare,If Not Equals,Then Set的方法呢 ?

比如,以下场景,就无法使用compareAndSet:

if(a != b){
  a = b;
}

if(a != c){
  a = b;
}

 

因为我觉得,compare,If Equals,Then Set 和 compare,If Not Equals,Then Set 是不能互相实现对方的,所以应该要有另外的方法才完整。

 

 

查到了:原来是因为compareAndSet是cpu支持的,没有 compare,If Not Equals,Then Set是因为cpu不支持。

http://tomyz0223.iteye.com/blog/770677

分享到:
评论

相关推荐

    set接口经常用的hashCode和equals方法详解

    ### set接口中hashCode和equals方法详解 #### 一、引言 在Java编程语言中,`Set`接口作为集合框架的重要组成部分,在实现无重复元素的数据结构方面扮演着关键角色。为了确保元素的唯一性,`Set`接口依赖于对象的`...

    重写equals方法

    在 Object 基类中,equals 方法的实现是使用“==”操作符来比较对象的引用,但是这并不满足实际需求。因此,需要重写 equals 方法以满足特定的需求。 什么时候需要重写 equals 方法? ------------------------- ...

    重载equals方法示例

    重载equals方法示例重载equals方法示例重载equals方法示例重载equals方法示例重载equals方法示例

    equals方法的重写.docx

    #### 二、为什么需要重写equals方法? 1. **提高程序效率**:当两个对象具有相同的业务逻辑上的“身份”时,它们应该被认为是相等的。 2. **增强代码可读性**:重写后的`equals`方法可以根据实际需求来判断对象是否...

    Java中equals方法隐藏的陷阱

    ### Java中equals方法隐藏的陷阱 在Java编程中,正确实现`equals`方法至关重要,它不仅影响对象的比较逻辑,还直接关系到集合类(如`HashSet`、`HashMap`等)的行为。本文将深入探讨Java中`equals`方法的一些常见...

    C# Equals 和 GetHashCode 方法重写

    ### C# Equals 和 GetHashCode 方法重写 在C#编程中,`Equals` 和 `GetHashCode` 方法是非常重要的成员方法,它们对于确保对象的正确比较以及高效地存储和检索对象至关重要。这两个方法通常需要在自定义类中进行...

    js equals方法

    在JavaScript中,`equals`方法并不像在其他某些编程语言中那样是内置的,例如Java。但是,由于JavaScript的灵活性,我们可以自定义一个`equals`函数来实现对象间的深度比较。这个方法通常用于比较两个对象的属性和值...

    重写toString和equals方法

    为什么要重写 equals() 方法 在 Object 类中,equals() 方法默认比较的是对象的引用是否指向同一块内存地址。这意味着,如果我们不重写 equals() 方法,那么比较两个对象是否相等将是基于对象的引用地址,而不是...

    hashcode和equals方法

    equals()和hashcode()这两个方法都是从object类中继承过来的。当String 、Math、还有Integer、Double。。。。等这些封装类在使用equals()方法时,已经覆盖了object类的equals()方法.

    C#使用Equals()方法比较两个对象是否相等的方法

    为了在自定义类中实现基于内容的相等比较,你需要重写`Equals()`方法,并可能同时重写`GetHashCode()`方法以保持一致性。下面是一个简单的例子: ```csharp public class Product { public string Name { get; set...

    equals与hashCode方法讲解

    equals 与 hashCode 方法讲解 equals 方法和 hashCode 方法是 Java 语言中两个重要的方法,它们都是在 Object 类中定义的。equals 方法用于比较两个对象是否相等,而 hashCode 方法用于返回对象的哈希码。 在 Java...

    重写equals和hashcode方法_equals_重写equals和hashcode方法_

    在Java编程语言中,`equals()` 和 `hashCode()` 方法是Object类中的两个核心方法,所有类都默认继承自Object类。这两个方法在处理对象比较和集合操作时起着至关重要的作用。当我们创建自定义类并需要对对象进行精确...

    java中的==和equals()方法1

    在Java编程语言中,了解如何正确使用`==`和`equals()`方法是非常关键的,因为它们在比较对象和基本类型时有不同的行为。下面将详细解释这两个方法的工作原理、使用场景以及一些常见误区。 首先,`==`运算符主要用于...

    java中hashcode()和equals()方法详解

    ### Java中`hashCode()`与`equals()`方法详解 #### 前言 在Java编程语言中,`hashCode()`和`equals()`方法是非常重要的概念,它们不仅对于深入理解Java内存管理至关重要,也是实现自定义类的关键部分之一。本文将...

    equals(Object) 与 == 的区别

    这就是为什么在上面的例子中,使用 equals(Object) 方法比较 s1 和 s2 的结果是 true,而使用 == 运算符比较的结果是 false。 因此,== 运算符比较的是两个对象的引用,而 equals(Object) 方法比较的是两个对象的...

    ==和equals方法究竟有什么区别

    在Java编程语言中,`==`和`equals()`方法是用来比较对象之间关系的两种常见方式,但它们在使用上有着显著的区别。 首先,`==`运算符主要用于比较基本类型(如int、char、byte等)的值是否相等,或者比较引用类型...

    2.javaequals()方法.zip

    2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2....

    知识点 比较运算符==和equals方法的比较

    在Java编程语言中,比较运算符`==`和`equals()`方法是用来检查两个对象是否相等的,但它们之间存在显著的区别。理解这些差异对于编写正确的代码至关重要。 首先,我们来看`==`运算符。它主要用于基本数据类型的比较...

    为什么重写equals方法,还必须要重写hashcode方法

    为什么重写equals方法,还必须要重写hashcode方法

    Java equals 方法与hashcode 方法的深入解析.rar

    在Java编程语言中,`equals()`方法和`hashCode()`方法是两个非常重要的概念,它们主要用于对象的比较和哈希表的高效运作。本解析将深入探讨这两个方法的用途、实现原理以及它们之间的关联。 首先,`equals()`方法是...

Global site tag (gtag.js) - Google Analytics