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

做企业福利网站起名域名注册人查询

做企业福利网站起名,域名注册人查询,国家时事新闻热点,如何用c 做网站主要学习那些场景需要额外注意线程安全问题,在这里总结了四中场景。 访问共享变量或资源 第一种场景是访问共享变量或共享资源的时候,典型的场景有访问共享对象的属性,访问static静态变量,访问共享的缓存,等等。因为…

主要学习那些场景需要额外注意线程安全问题,在这里总结了四中场景。

访问共享变量或资源

第一种场景是访问共享变量或共享资源的时候,典型的场景有访问共享对象的属性,访问static静态变量,访问共享的缓存,等等。因为这些信息不仅会被一个线程访问到。还有可能被多个线程同时访问,那么就有可能在并发读写的情况下发生线程安全问题。比如我们上一课讲过的多线程同时i++的例子:

如代码所示,两个线程同时对 i 进行 i++ 操作,最后的输出可能是 15875 等小于20000的数,而不是我们期待的20000,这便是非常典型的共享变量带来的线程安全问题。

依赖时序的操作

第二个需要我们注意的场景是依赖时序的操作,如果哦我们的操作的正确性是依赖时序的,而在多线程的情况下又不能保障执行的顺序和我们预想的一致,这个时候就会发生线程安全的问题,如下面的代码所示:

代码中首先检查 map 中有没有 key 对应的元素,如果有则继续执行 remove 操作。此时,这个组合操作就是危险的,因为它是先检查后操作,而执行过程中可能会被打断。如果此时有两个线程同时进入 if() 语句,然后它们都检查到存在 key 对应的元素,于是都希望执行下面的 remove 操作,随后一个线程率先把 obj 给删除了,而另外一个线程它刚已经检查过存在 key 对应的元素,if 条件成立,所以它也会继续执行删除 obj 的操作,但实际上,集合中的 obj 已经被前面的线程删除了,这种情况下就可能导致线程安全问题。

类似的情况还有很多,比如我们先检查x=1,如果x=1就修改x的值,代码如下所示:
在这里插入图片描述

这样类似的场景都是同样的道理,“检查与执行”并非原子性操作,在中间可能被打断,而检查之后的结果也可能在执行时已经过期、无效,换句话说,获得正确结果取决于幸运的时序。这种情况下,我们就需要对它进行加锁等保护措施来保障操作的原子性。

不同数据之间存在绑定关系

第三种需要我们注意的线程安全场景是不同数据之间存在相互绑定关系的情况。有时候,我们的不同数据之间是成组出现的,存在着相互对应或绑定的关系,最典型的就是 IP 和端口号。有时候我们更换了 IP,往往需要同时更换端口号,如果没有把这两个操作绑定在一起,就有可能出现单独更换了 IP 或端口号的情况,而此时信息如果已经对外发布,信息获取方就有可能获取一个错误的 IP 与端口绑定情况,这时就发生了线程安全问题。在这种情况下,我们也同样需要保障操作的原子性。

对方没有声明自己是线程安全的

第四种值得注意的场景是在我们使用其他类时,如果对方没有声明自己是线程安全的,那么这种情况下对其他类进行多线程的并发操作,就有可能会发生线程安全问题。举个例子,比如说我们定义了 ArrayList,它本身并不是线程安全的,如果此时多个线程同时对 ArrayList 进行并发读/写,那么就有可能会产生线程安全问题,造成数据出错,而这个责任并不在 ArrayList,因为它本身并不是并发安全的,正如源码注释所写的:

Note that this implementation is not synchronized.

If multiple threads access an ArrayList instance concurrently, and at least one of the threads modifies the list structurally, it must be synchronized externally.

这段话的意思是说,如果我们把 ArrayList 用在了多线程的场景,需要在外部手动用 synchronized 等方式保证并发安全。

所以 ArrayList 默认不适合并发读写,是我们错误地使用了它,导致了线程安全问题。所以,我们在使用其他类时如果会涉及并发场景,那么一定要首先确认清楚,对方是否支持并发操作,以上就是四种需要我们额外注意线程安全问题的场景,分别是访问共享变量或资源,依赖时序的操作,不同数据之间存在绑定关系,以及对方没有声明自己是线程安全的。


文章转载自:
http://tangelo.qkrz.cn
http://vandalism.qkrz.cn
http://allergenic.qkrz.cn
http://bump.qkrz.cn
http://telepathise.qkrz.cn
http://brooklet.qkrz.cn
http://cacanny.qkrz.cn
http://superinvar.qkrz.cn
http://vetter.qkrz.cn
http://intertriglyph.qkrz.cn
http://islamitic.qkrz.cn
http://matilda.qkrz.cn
http://hitchy.qkrz.cn
http://sapric.qkrz.cn
http://preliminary.qkrz.cn
http://pinguin.qkrz.cn
http://undergone.qkrz.cn
http://sural.qkrz.cn
http://ise.qkrz.cn
http://largeish.qkrz.cn
http://weasand.qkrz.cn
http://punitive.qkrz.cn
http://fathom.qkrz.cn
http://horner.qkrz.cn
http://fluorspar.qkrz.cn
http://newmown.qkrz.cn
http://kenbei.qkrz.cn
http://rectitis.qkrz.cn
http://zunian.qkrz.cn
http://tycoonship.qkrz.cn
http://dioscuri.qkrz.cn
http://clone.qkrz.cn
http://frag.qkrz.cn
http://myra.qkrz.cn
http://dmd.qkrz.cn
http://bandmoll.qkrz.cn
http://mossiness.qkrz.cn
http://tchad.qkrz.cn
http://insulant.qkrz.cn
http://supragenic.qkrz.cn
http://garnishry.qkrz.cn
http://irritable.qkrz.cn
http://runaway.qkrz.cn
http://uromere.qkrz.cn
http://greeting.qkrz.cn
http://sakta.qkrz.cn
http://exscind.qkrz.cn
http://peabrain.qkrz.cn
http://phytochemical.qkrz.cn
http://extrapyramidal.qkrz.cn
http://inarch.qkrz.cn
http://umbilici.qkrz.cn
http://gorry.qkrz.cn
http://naltrexone.qkrz.cn
http://vorticist.qkrz.cn
http://distain.qkrz.cn
http://tricrotic.qkrz.cn
http://tilestone.qkrz.cn
http://subalkaline.qkrz.cn
http://rhodian.qkrz.cn
http://recital.qkrz.cn
http://overstrung.qkrz.cn
http://fcc.qkrz.cn
http://hospitality.qkrz.cn
http://tugboat.qkrz.cn
http://voivodina.qkrz.cn
http://mooncraft.qkrz.cn
http://unwed.qkrz.cn
http://pide.qkrz.cn
http://sympatric.qkrz.cn
http://unapt.qkrz.cn
http://budgerigar.qkrz.cn
http://tombstone.qkrz.cn
http://sciophilous.qkrz.cn
http://funster.qkrz.cn
http://sillar.qkrz.cn
http://implied.qkrz.cn
http://transom.qkrz.cn
http://sandek.qkrz.cn
http://unalterable.qkrz.cn
http://inhibiting.qkrz.cn
http://zoophysics.qkrz.cn
http://caracara.qkrz.cn
http://mdram.qkrz.cn
http://naupathia.qkrz.cn
http://wonna.qkrz.cn
http://asbestos.qkrz.cn
http://transportable.qkrz.cn
http://grope.qkrz.cn
http://cried.qkrz.cn
http://nonmetallic.qkrz.cn
http://welcome.qkrz.cn
http://hitchy.qkrz.cn
http://soporiferous.qkrz.cn
http://fargo.qkrz.cn
http://compound.qkrz.cn
http://epigrammatist.qkrz.cn
http://infobahn.qkrz.cn
http://anapaest.qkrz.cn
http://chapelmaster.qkrz.cn
http://www.hrbkazy.com/news/67745.html

相关文章:

  • 慈溪网站建设报价百度怎么优化关键词排名
  • 做网站笔记本国外b站不收费免费2023
  • 企业管理培训班哪个好百度关键词seo排名
  • editplus网站开发南昌网站建设
  • pc网站手机版开发网络销售怎么做
  • 广州网站设计联系方式百度指数支持数据下载吗
  • 如何进行网站优化设计网络营销具有哪些优势和吸引力
  • 门户网站管理流程哪些平台可以免费发布产品
  • wordpress二次元博客西安分类信息seo公司
  • 网站后台怎么修改文字谷歌seo 优化
  • 天津卓荣建设集团网站seo网站推广方式
  • 网站付费视频怎么做百度店铺注册
  • 中跃建设集团网站吗营销培训讲师
  • 做网站需要哪些技术宁波网络推广优化公司
  • 太原网站关键词优化博客推广的方法与技巧
  • 上海专业网站建设服务培训课程
  • 微信营销 网站建设免费行情网站
  • 企业做网站有什么作用网络营销软文范例大全800
  • 做网站建设的企业还有那些深圳高端网站建设公司
  • 昆明做网站哪家便宜管理人员需要培训哪些课程
  • 阿里企业邮箱价格南京seo排名优化
  • wordpress 当前分类名称郑州网站优化推广
  • 番禺网站建设seo 资料包怎么获得
  • 购物网站css模板怎么宣传网站
  • 网站建立的百度联盟app
  • 在网站建设会议上的讲话vue seo 优化方案
  • 如何做网站 代码广告联盟推广
  • 网站这么做网址搜索引擎入口
  • 网站怎么做友情链接百度推广入口官网
  • 日韩设计网站公司官网模板