栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java多线程环境操作一个共享变量并保证原子性

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java多线程环境操作一个共享变量并保证原子性

volatile实现可见性,但是不能保持原子性,synchronized实现可见性和原子性,但是多线程下使用会降低效率,下面使用java并发包下的Atomic原子操作

    public static void main(String[] args) {
        AtomicInteger v1 =new AtomicInteger(0);
        AtomicInteger v2 =new AtomicInteger(1);
        AtomicMarkableReference stampedRef =new AtomicMarkableReference<>(v1, false);
        // 定义线程实现接口
        Runnable runnable =new Runnable(){
            @Override
            public void run() {
                this.count(v1,v2,stampedRef);
            }
            // 执行方法
            public void count(AtomicInteger v1, AtomicInteger v2, AtomicMarkableReference stampedRef ) {
                //java多线程 操作共享变量 保证原子性
                boolean flag = stampedRef.compareAndSet(v1, v2, false, true);
                if(flag){
                    System.out.println(Thread.currentThread().getName()+"--update"+stampedRef.getReference());
                }
            }
        };
        // 启动10000个线程
        for(int i=0;i<10000;i++) {
            new Thread(runnable).start();
        }
    }

执行结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/839099.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号