zoukankan      html  css  js  c++  java
  • 3. 原子变量-CAS算法

    1. 是什么 ?

    2. CAS算法模拟

    package com.gf.demo03;
    public class TestCompareAndSwap {
    
    	public static void main(String[] args) {
    		CompareAndSwap cas = new CompareAndSwap();
    		for (int i = 0; i < 10; i++) {
    			new Thread(new Runnable() {
    				
    				@Override
    				public void run() {
    					int expectedValue = cas.get();
    					boolean b = cas.compareAndSet(expectedValue, (int)(Math.random() * 101));
    					System.out.println(b);
    				}
    			}).start();
    		}
    	}
    	
    }
    
    class CompareAndSwap{
    	private int value;
    	
    	//获取内存值
    	public synchronized int get(){
    		return value;
    	}
    	
    	//比较
    	public synchronized int compareAndSwap(int expectedValue,int newValue){
    		int oldValue = value;
    		if(oldValue == expectedValue){
    			this.value = newValue;
    		}
    		
    		return oldValue;
    	}
    	
    	//设置
    	public synchronized boolean compareAndSet(int expectedValue,int newValue){
    		return expectedValue == compareAndSwap(expectedValue, newValue);
    	}
    }
    

    关注我的公众号,精彩内容不能错过

  • 相关阅读:
    人 生 死 梦
    接口(三):
    接口(二):
    Mac下OpenCV开发环境配置(Terminal和Xcode)
    OcLint的使用
    分类Category的概念和使用流程
    @class
    内存管理
    点语法
    多态的概念和用法
  • 原文地址:https://www.cnblogs.com/huanchupkblog/p/8037615.html
Copyright © 2011-2022 走看看