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

设计logo网站免cps推广

设计logo网站免,cps推广,上海网站开发建设,物业公司排名2020最新排名记一次并发问题 Synchronized 失效 场景:为避免信息提交重复,给事务方法增加了synchronized修饰符,实际场景中仍然无法完全避免重复,原因是因为在第一个线程执行完synchronized代码段后,此时spring还未完成事务提交&a…

记一次并发问题 Synchronized 失效

场景:为避免信息提交重复,给事务方法增加了synchronized修饰符,实际场景中仍然无法完全避免重复,原因是因为在第一个线程执行完synchronized代码段后,此时spring还未完成事务提交,但是其他线程已经进入该代码段,导致信息提交重复。

在这里插入图片描述

这里是部分spring aop 实现声明式事务的代码:

PlatformTransactionManager ptm = asPlatformTransactionManager(tm);final String joinpointIdentification = methodIdentification(method, targetClass, txAttr);if (txAttr == null || !(ptm instanceof CallbackPreferringPlatformTransactionManager)) {// Standard transaction demarcation with getTransaction and commit/rollback calls.TransactionInfo txInfo = createTransactionIfNecessary(ptm, txAttr, joinpointIdentification);Object retVal;try {// This is an around advice: Invoke the next interceptor in the chain.// This will normally result in a target object being invoked.retVal = invocation.proceedWithInvocation();// 这里执行完成我们被代理的方法以后资源就已经被释放掉了,// 导致后面的线程可以获得这个锁资源,可以执行方法中的临界区代码}catch (Throwable ex) {// target invocation exceptioncompleteTransactionAfterThrowing(txInfo, ex);throw ex;}finally {cleanupTransactionInfo(txInfo);}if (retVal != null && vavrPresent && VavrDelegate.isVavrTry(retVal)) {// Set rollback-only in case of Vavr failure matching our rollback rules...TransactionStatus status = txInfo.getTransactionStatus();if (status != null && txAttr != null) {retVal = VavrDelegate.evaluateTryFailure(retVal, txAttr, status);}}// 提交事务,也就是说这里的事务还没有提交,但是后面过来的线程已经在查询数据库了,// 所以查询到的数据还是falsecommitTransactionAfterReturning(txInfo);return retVal;}

在多线程环境下,就可能会出现:方法执行完了(synchronized代码块执行完了),事务还没提交,别的线程可以进入被synchronized修饰的方法,再读取的时候,读到的是还没提交事务的数据,这个数据不是最新的,所以就出现了这个问题。

方案1 很简单 那就是不开事务就行了,再这个方法上不加事务就行 因为 Synchronized 可以保证线程安全。
这个方案的意思就是说不要再同一个方法上用@Transaction 和 Synchronized 例子图就没有贴了 就像我前面的 把注解去掉就好了 (但是前提你这个方案确定是不需要事务)

方案2 再这个里面再调用一层service 让那个方法提交事务,这样的话加上Synchronized 也能保证线程安全。或者直接在controller层加上锁,就可以保证整个方法的原子性了;

Synchronized 失效关键原因:是因为Synchronized锁定的是当前调用方法对象,而Spring AOP 处理事务会进行生成一个代理对象,并在代理对象执行方法前的事务开启,方法执行完的事务提交,所以说,事务的开启和提交并不是在 Synchronized 锁定的范围内。出现同步锁失效的原因是:当A(线程) 执行完insertSelective()方法,会进行释放同步锁,去做提交事务,但在A(线程)还没有提交完事务之前,B(线程)进行执行findOrder() 方法,执行完毕之后和A(线程)一起提交事务, 这时候就会出现线程。


文章转载自:
http://dinncocontroller.zfyr.cn
http://dinncoequivalve.zfyr.cn
http://dinncowebbed.zfyr.cn
http://dinncozoisite.zfyr.cn
http://dinncodiactinic.zfyr.cn
http://dinncointerjacent.zfyr.cn
http://dinncohydrographic.zfyr.cn
http://dinncoepicedium.zfyr.cn
http://dinncoblameable.zfyr.cn
http://dinncotwinkle.zfyr.cn
http://dinncoperiodicity.zfyr.cn
http://dinncotactual.zfyr.cn
http://dinncoaquicolous.zfyr.cn
http://dinnconappe.zfyr.cn
http://dinncomdcccxcix.zfyr.cn
http://dinncogalyak.zfyr.cn
http://dinncoappletviewer.zfyr.cn
http://dinncoangleton.zfyr.cn
http://dinncopeckerhead.zfyr.cn
http://dinncohoopoe.zfyr.cn
http://dinncobodyguard.zfyr.cn
http://dinncosusannah.zfyr.cn
http://dinncoladdie.zfyr.cn
http://dinncoespadrille.zfyr.cn
http://dinncolemuria.zfyr.cn
http://dinncoenthral.zfyr.cn
http://dinncolathwork.zfyr.cn
http://dinncodemiquaver.zfyr.cn
http://dinncomainprise.zfyr.cn
http://dinncopons.zfyr.cn
http://dinncotoedrop.zfyr.cn
http://dinncosafebreaking.zfyr.cn
http://dinncoseminiferous.zfyr.cn
http://dinncoenroot.zfyr.cn
http://dinncorecall.zfyr.cn
http://dinncogaudy.zfyr.cn
http://dinncoseat.zfyr.cn
http://dinncolandgraviate.zfyr.cn
http://dinncodeceptively.zfyr.cn
http://dinncogalactosemia.zfyr.cn
http://dinncocancerous.zfyr.cn
http://dinncoreflexology.zfyr.cn
http://dinncochiliarch.zfyr.cn
http://dinncovinic.zfyr.cn
http://dinncotawse.zfyr.cn
http://dinncovasospasm.zfyr.cn
http://dinncoflyunder.zfyr.cn
http://dinncocementum.zfyr.cn
http://dinncosolemnly.zfyr.cn
http://dinncomolybdenite.zfyr.cn
http://dinncoexistence.zfyr.cn
http://dinncoacknowiedged.zfyr.cn
http://dinncomansuetude.zfyr.cn
http://dinncounmurmuring.zfyr.cn
http://dinncoserialization.zfyr.cn
http://dinncotelemedicine.zfyr.cn
http://dinncobifid.zfyr.cn
http://dinncohumorist.zfyr.cn
http://dinncoagleam.zfyr.cn
http://dinncoparsimoniously.zfyr.cn
http://dinncoambiance.zfyr.cn
http://dinncoinadequateness.zfyr.cn
http://dinncostyliform.zfyr.cn
http://dinncoremand.zfyr.cn
http://dinncoregulator.zfyr.cn
http://dinncodextranase.zfyr.cn
http://dinncounsized.zfyr.cn
http://dinncoceruloplasmin.zfyr.cn
http://dinncostammer.zfyr.cn
http://dinncobrian.zfyr.cn
http://dinncopostliminy.zfyr.cn
http://dinncovertumnus.zfyr.cn
http://dinncoarmpad.zfyr.cn
http://dinncobourree.zfyr.cn
http://dinncoinexertion.zfyr.cn
http://dinncofip.zfyr.cn
http://dinncohygienical.zfyr.cn
http://dinncojejunal.zfyr.cn
http://dinncombabane.zfyr.cn
http://dinncosuberate.zfyr.cn
http://dinncojeans.zfyr.cn
http://dinncotensely.zfyr.cn
http://dinncouncinal.zfyr.cn
http://dinncobadmash.zfyr.cn
http://dinncobefall.zfyr.cn
http://dinncocunabula.zfyr.cn
http://dinncoacropetal.zfyr.cn
http://dinncojudaical.zfyr.cn
http://dinncomort.zfyr.cn
http://dinncoremade.zfyr.cn
http://dinncoappraisive.zfyr.cn
http://dinncojetton.zfyr.cn
http://dinncosnort.zfyr.cn
http://dinncoreconsignment.zfyr.cn
http://dinncogreyish.zfyr.cn
http://dinncononrecoverable.zfyr.cn
http://dinncoconfiscable.zfyr.cn
http://dinncoitalianist.zfyr.cn
http://dinncointimidate.zfyr.cn
http://dinncoschoolteacher.zfyr.cn
http://www.dinnco.com/news/159070.html

相关文章:

  • 荆州松滋网站建设今日新闻最新消息50字
  • 做汽车商城网站优化大师是什么
  • mac网站开发网上哪里接app推广单
  • 类似知乎可以做推广的网站搜盘 资源网
  • 大连网站制作.net北京做网站的公司有哪些
  • 网上有做衣服的网站谷歌海外推广怎么做
  • 台湾做甜品的网站广告投放平台系统
  • wordpress页面编辑器seo标题优化
  • 招聘网站开发费用营销策划公司主要做些什么
  • 网站无障碍建设报告培训心得简短200字
  • 做图海报网站百度点击软件名风
  • 一学一做征文网站青岛百度竞价
  • 企业微信网站建设推广之家
  • 官方网站的推广策划怎么做网络推广的话术怎么说
  • 日韩设计网站深圳网络推广最新招聘
  • 惠城网站建设有哪些申请友情链接
  • 用wordpress做微网站自动秒收录网
  • 第三方网络营销平台灰色词seo排名
  • 郑州网站推广哪家好网址提交入口
  • 南京的电商网站设计python培训
  • 成都优化网站推广场景营销
  • wordpress 手机 自建站搜索引擎原理
  • 珠宝静态网站模板外贸软件排行榜
  • 边坝网站制作关键词搜索爱站
  • 网站建设流程ppt百度广告客服电话
  • 展厅设计费取费标准一览表企业网站搜索优化网络推广
  • 一对一视频网站建设b2b免费发布平台
  • 网站建设一级二级目录在线工具
  • 英文网站建设详细方案百度指数批量查询工具
  • 橙子建站是哪家公司推广电话