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

网站建设案例教程微信网站公司

网站建设案例教程,微信网站公司,临安区规划建设局网站,网站建设教程浩森宇特最有用的东西,是你手里的钱,有钱就有底气,还不快去挣钱~ 文章目录CAS 和 Synchronized 优化过程1. CAS1.1 CAS的原理1.2 CAS实现自增自减的原子性1.3 CAS实现自旋锁1.4 CAS针对ABA问题的优化2. synchronized2.1 synchronized加锁阶段分析2.2 synchronized优化CAS 和 Synchroniz… 最有用的东西,是你手里的钱,有钱就有底气,还不快去挣钱~ 文章目录CAS 和 Synchronized 优化过程1. CAS1.1 CAS的原理1.2 CAS实现自增自减的原子性1.3 CAS实现自旋锁1.4 CAS针对ABA问题的优化2. synchronized2.1 synchronized加锁阶段分析2.2 synchronized优化CAS 和 Synchronized 优化过程 1. CAS 1.1 CAS的原理 CAS的具体操作是,有一个变量值i为A,想要将值A修改为新值B. 1.compare: 比较 if( i A ). 2.swap : 如果相等,就把i的值改为B 3.返回此操作是否成功 CAS操作具有原子性,即这三个操作会通过一个指令完成三条操作,在一定程度上规避了线程安全问题. 1.2 CAS实现自增自减的原子性 如下代码,AtomicInteger,AtomicLong等类运用了CAS机制,实现变量自增自减的原子性. a.getAndIncrement(); //a a.getAndDecrement(); //a– a.incrementAndGet(); //a a.decrementAndGet(); //- -a a.addAndGet(3); //a 3 import java.util.concurrent.Callable; import java.util.concurrent.atomic.AtomicInteger; public class MyAtomicInteger {public static void main(String[] args) throws InterruptedException{//AtomicInteger,AtomicLong,AtomicBoolean,AtomicIntegerArrayAtomicInteger a new AtomicInteger(0);Thread t1 new Thread(()-{a.getAndIncrement(); //aa.getAndDecrement(); //a--a.incrementAndGet(); //aa.decrementAndGet(); //--aa.addAndGet(3); //a 3});Thread t2 new Thread(()-{a.getAndIncrement();});t1.start();t2.start();t1.join();t2.join();System.out.println(a.get());} }1.3 CAS实现自旋锁 如下图,是CAS实现自旋锁的伪代码 while(!CAS(this.owner,null,Thread.currentThread())) 1.线程owner初始化为null 2.进入循环,先判断线程owner是否为null,如果owner不为空,代表owner正在被其他线程占用,则需要阻塞等待. 3.线程解锁后,又被设为null,这时可以把当前线程赋值给owner. 1.4 CAS针对ABA问题的优化 CAS的核心机制,检查变量i和旧值A是否相等,但如果变量i中途被修改了,后来又恢复成了A,系统是无法察觉的. 例如去银行取钱,原来1000,要取出500.银行系统慢,这个人多点了两下取钱键. 1.先比较钱数是否为1000,是,取出500. 2.但取钱的同时有位有人给卡充了500,使钱恢复成了1000 3.系统第二次比较,发现钱是1000,又取出了500 很明显,在这卡bug呢. 优化机制 给操作加一个版本号,每执行一次操作,版本号加1.执行的次数以版本号为主.就不会出现执行多次的情况 2. synchronized 2.1 synchronized加锁阶段分析 synchronized加锁有一个过程 1.无锁状态 2.偏向锁,先给要加锁的对象一个标记,看对象是否存在锁竞争,若执行过程中没有出现锁竞争,在执行synchronized之后取消偏向锁即可.如果出现另外的线程去竞争锁,需要迅速把偏向锁升级成真正的加锁状态. 3.轻量级锁,当synchronized发生锁竞争时,偏向锁升级为轻量级锁(加锁方式为自旋锁). 4.如果一直拿不到锁,自旋了一定时间后,锁就会升级为重量级锁(挂起等待锁).进入阻塞队列等待,直到锁被释放,线程才有机会获取锁. 注意:锁只能升级,没办法降级. 2.2 synchronized优化 1.锁清除 对对象加锁后,编译器可以去自动判定,若当前场景不需要加锁,编译器会把锁清除. 2.锁粗化 如果一段代码中,出现了多个锁,加锁解锁频繁,并且每个锁之间距离很近.这时可以用一个大锁直接包含这些小锁,减少频繁加锁解锁的开销. 本文完
http://www.hkea.cn/news/14390064/

相关文章:

  • 网站开发后台框架传智播客培训机构官网
  • 物流网站建设图片昆明短视频运营公司
  • wordpress子站点解析做电影网站怎么批量去水印
  • 公司企业网站程序下载建设银行北京东四支行网站
  • 电子商务网站有哪几种百度搜索推广技巧
  • 求个网站2021能用的怎么建设一个音乐网站
  • 网站策划书3000网站制作网站维护
  • 成都网站建设模版企业网站推广费用
  • 比较好约的网站设计平度做网站推广
  • 哪些网站做的海报比较高大上门户网站系统设计
  • 网站建设 技术团队想做一个部门的网站怎么做
  • 番禺网站开发平台网络营销名词解释电子商务
  • 哪里有学习做网站的wordpress做商城网站吗
  • 网站建设低价建站损失在哪里2017两学一做网站
  • 网站设计多少钱电子商务网站建设的基本要求
  • 电脑硬盘做网站服务器教程百度一下百度网页版主页
  • 泰安网站开发哪家便宜天津最新消息今天
  • 桓台县城乡建设局网站公司做环评的网站
  • 企业网站建设可以分为( )交互层次水处理设备网站建设
  • 网站开发亿码酷负责公司企业模板
  • 莆田网站建设技术托管苏州网站建设搜王道下拉
  • 外贸行业网站建设公司网站首页快照怎么做
  • 企业网站主页设计图片东莞开发公司网站建设
  • 郭仓镇做网站集团网站目标
  • 做门户网站用什么系统营销推广方案怎么写
  • 东莞+网站+建设+汽车邢台网站建设制作
  • 聊城网站推广怎么做江阴哪里有做网站推广
  • 企业可以在哪些网站做免费宣传什么公司需要建立网站
  • 网站建设文字资料做go分析和kegg分析网站
  • 烟台网站制作建设免费网络电话呼叫系统