当前位置: 首页 > news >正文

网站开发维护任职要求宝安中心地铁站是几号线

网站开发维护任职要求,宝安中心地铁站是几号线,网上购物系统概述,佛山企业网站制作1、通过引入版本戳(stamp)机制解决ABA问题: 每次修改时递增版本号执行CAS时同时检查值和版本号即使值相同但版本不同,操作也会失败2、具体代码实现 import java.util.concurrent.atomic.AtomicStampedReference;public class AtomicStampedReferenceDemo…

1、通过引入版本戳(stamp)机制解决ABA问题:

  • 每次修改时递增版本号
  • 执行CAS时同时检查值和版本号
  • 即使值相同但版本不同,操作也会失败
    在这里插入图片描述

2、具体代码实现

import java.util.concurrent.atomic.AtomicStampedReference;public class AtomicStampedReferenceDemo {// 账户余额初始值为100,版本号初始为0private static final AtomicStampedReference<Integer> accountBalance =new AtomicStampedReference<>(100, 0);public static void main(String[] args) throws InterruptedException {System.out.println("============== AtomicStampedReference解决ABA问题 ==============");System.out.println("初始账户余额: " + accountBalance.getReference() +"元, 版本号: " + accountBalance.getStamp());System.out.println();// 创建ABA操作线程Thread abaThread = new Thread(() -> {int[] stampHolder = new int[1];int currentValue;// 第一次修改:10050System.out.println(stampHolder[0]);currentValue = accountBalance.get(stampHolder);int currentStamp = stampHolder[0];System.out.println("[ABA线程] 读取余额: " + currentValue + "元, 版本: " + currentStamp);boolean success = accountBalance.compareAndSet(currentValue,50,currentStamp,currentStamp + 1);System.out.println("[ABA线程] 修改余额为50: " + (success ? "成功" : "失败") +", 新版本: " + accountBalance.getStamp());System.out.println("当前余额: " + accountBalance.getReference() + "元");System.out.println();// 第二次修改:50 → 100currentValue = accountBalance.get(stampHolder);currentStamp = stampHolder[0];System.out.println("[ABA线程] 读取余额: " + currentValue + "元, 版本: " + currentStamp);success = accountBalance.compareAndSet(currentValue,100,currentStamp,currentStamp + 1);System.out.println("[ABA线程] 恢复余额为100元: " + (success ? "成功" : "失败") +", 新版本: " + accountBalance.getStamp());System.out.println("当前余额: " + accountBalance.getReference() + "元");System.out.println();});// 创建转账线程Thread transferThread = new Thread(() -> {int[] stampHolder = new int[1];int currentValue = accountBalance.get(stampHolder);int currentStamp = stampHolder[0];System.out.println("[转账线程] 读取余额: " + currentValue + "元, 版本: " + currentStamp);System.out.println("[转账线程] 开始处理转账...");try {// 模拟处理耗时Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("[转账线程] 转账处理完成,尝试更新账户");// 尝试更新余额(增加50元)boolean success = accountBalance.compareAndSet(currentValue,currentValue + 50,currentStamp,currentStamp + 1);System.out.println("\n===== 转账操作结果 =====");System.out.println("操作结果: " + (success ? "成功" : "失败"));System.out.println("预期版本: " + currentStamp + ", 实际版本: " + accountBalance.getStamp());System.out.println("预期余额: " + currentValue + "元, 当前余额: " + accountBalance.getReference() + "元");System.out.println("=====================\n");});// 启动线程transferThread.start();Thread.sleep(500); // 确保转账线程先读取初始值abaThread.start();// 等待线程完成abaThread.join();transferThread.join();System.out.println("\n最终账户余额: " + accountBalance.getReference() + "元, 版本号: " + accountBalance.getStamp());System.out.println("============== 演示结束 ==============");}
}
============== AtomicStampedReference解决ABA问题 ==============
初始账户余额: 100元, 版本号: 0[转账线程] 读取余额: 100元, 版本: 0
[转账线程] 开始处理转账...
0
[ABA线程] 读取余额: 100元, 版本: 0
[ABA线程] 修改余额为50元: 成功, 新版本: 1
当前余额: 50[ABA线程] 读取余额: 50元, 版本: 1
[ABA线程] 恢复余额为100元: 成功, 新版本: 2
当前余额: 100[转账线程] 转账处理完成,尝试更新账户===== 转账操作结果 =====
操作结果: 失败
预期版本: 0, 实际版本: 2
预期余额: 100元, 当前余额: 100=====================最终账户余额: 100元, 版本号: 2
============== 演示结束 ==============Process finished with exit code 0
http://www.dtcms.com/a/459161.html

相关文章:

  • 网站运营难做嘛禅城网站建设多少钱
  • 可以盗链图片的网站重庆大型的网站建设
  • day05-问答系统
  • 永久免费的wap建站平台泉州优化公司
  • 设计网站的一般过程网站入侵怎么做
  • 网站统计排名WordPress批量修改文章
  • 红色大气网络公司企业网站源码_适合广告设计用divid做网站代码
  • 湖南建设厅网站证书查询做快三网站
  • 陕西交通建设集团信息网站做翻译兼职的网站是哪个
  • 网站建设丷金手指专业十五网上智慧团建官网
  • 网站建设 软件有哪些方面wordpress文章内多页面
  • 南京网站销售网上注册公司的网址
  • 简单的seo网站优化排名aspnet网站开发
  • 崇明建设小学网站福建省鑫通建设有限公司网站
  • 锐途网站建设写作网站投稿赚钱
  • 做个电商网站和app网站禁止右键
  • 浙江建设厅网站首页新企业名录数据免费
  • wordpress 自动链接seo项目
  • 如何逐步提升网站权重哪里有网站建设服务
  • 大型门户网站建设服务网站开发商外包
  • 学校网站建设的意义和应用石家庄软件开发培训学校
  • 归并排序:高效稳定分治之道
  • 网站缓存设置怎么做太原app制作
  • 郑州专业建站报价有深度网站
  • 以太网数据报文字段全解析:从物理层到应用层的协议交响曲
  • 怎样保证网站的安全wordpress免费绑定域名
  • wordpress小型论坛主题网站建设优化推广哈尔滨
  • wordpress微信主页外贸建站seo优化
  • 专业网站设计开发热烈祝贺网站上线
  • 公共安全事件分析-5_文章思路