• 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);
    	}
    }
    

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

  • 相关阅读:
    刚好遇见你——软件工程
    int main(int argc,char* argv[]) 简单理解
    奇偶数分离
    A+B Problem
    日期计算
    正三角形的外接圆面积
    数数小木块
    谁是最好的Coder
    水仙花数
    5个数求最值
  • 原文地址:https://www.cnblogs.com/huanchupkblog/p/8037615.html
Copyright © 2020-2023  润新知