• GUC-3 模拟CAS算法


    /*
     * 模拟 CAS 算法
     */
    public class TestCompareAndSwap {
    
        public static void main(String[] args) {
            final 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);
        }
    }
  • 相关阅读:
    动态调整iframe的高度
    Binary Tree Zigzag Level Order Traversal
    Leetcode Anagrams
    二叉树层次遍历串成单链表
    leetcode 4sum
    leetcode 二叉树系列
    编程之美2.3
    Decode Ways
    leetcode graycode
    leetcode editdistance
  • 原文地址:https://www.cnblogs.com/surge/p/10476224.html
Copyright © 2020-2023  润新知