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

广州市网站集约化建设工作要求黑龙江新闻头条最新消息

广州市网站集约化建设工作要求,黑龙江新闻头条最新消息,免费做淘宝店铺招牌的网站,怎么做点击图片进网站线程安全是多线程的重点和难点。 线程安全概念 线程安全:在多线程的各种随机调度顺序下,代码没有bug,都能够符合预期的方式来执行,此时认为线程安全 线程不安全:如果在多线程随机调度下代码出现bug,此时…

线程安全是多线程的重点和难点。

线程安全概念

线程安全:在多线程的各种随机调度顺序下,代码没有bug,都能够符合预期的方式来执行,此时认为线程安全

线程不安全:如果在多线程随机调度下代码出现bug,此时就认为是线程不安全

当然,产生的**“bug”**算不算一个bug,取决于产品的需求文档

通过一段典型的代码来认识线程不安全

image-20230222195737946

预期结果:count = 10000;

实际结果:image-20230222195805667

同时每次结果不同。

上诉问题是怎么出现的?

原因:

Count类里面的increas方法进行的count++操作,在计算机底层是三条指令在CPU上完成的!

1)把内存的数据读取到CPU寄存器中 load

2)把CPU的寄存器的值,进行 +1 add

3)把寄存器的值,写回到内存中 save

由于当前线程是两个线程修改一个变量,由于每次修改是3个步骤(不是原子的),由于线程之间的调度顺序是不确定。“
因此两个线程在真正执行这些操作的时候,就可能有多种执行的排列顺序。

正常情况: 两次累加,得到的结果应该是2

image-20230222200956215

出现线程不安全情况:两次累加,得到的结果不是2

image-20230222201051293

image-20230222201114350

当然看图可能理解的不好,接来就选择一种情况来分析:

QQ录屏20230222202418 00_00_00-00_00_30

在形如这样的排列顺序下,此时多线程自增就会存在“线程安全问题”

整个线程 调度过程中,执行的顺序都是随机的;
由于在调度过程中,出现“串行执行”两种情况的次数和其他情况的次数不确定,因此得到的结果就是不确定的。(串行执行:正常情况那张图的两种方式就叫做串行执行)

线程不安全的五种原因:

1、抢占式执行(罪魁祸首)

多个线程调度的执行过程,是随机的

多线程编程难点:在编写多线程的代码的时候,就需要考虑到任意一种调度的情况下,都是能够运行出正确的结果的。

2、多个线程同时修改同一个变量

一个线程修改一个变量没事,多个线程同一个变量,没事,多个线程修改不同变量,仍然没事。

这里涉及到一个面试题:String是不可变对象,这样设计有什么好处?

1、不可变对象本质是因为private隐藏了set系列方法

2、好处:线程安全是好处之一

3、修改操作不是原子的

解决线程安全问题,最常见的办法就是从原子性入手,把多个线程通过特殊手段,打包成一个原子操作。

像count++这种指令,本质上是三个CPU指令

load
add
save

CPU执行指令都是以“一个指令”为单位进行执行。
一个指令就相当于CPU上的**“最小单位”**不能说指令执行一般就把线程调度走了

但是修改操作,比如int a = 3;这样的赋值操作,就是单个CPU指令。这个时候就是更安全点。

(一个代码是否线程安全,判定是复杂的)

4、内存可见性

JVM代码优化带来的BUG

假设我们的代码很挫,目前有一个任务,是上级领导让我们加4个同事微信,并且问他们工作完成了没有;

假设我们写的代码是这样的,加一个同事,等待同事同意好友,回复以后,再去加下一个同事,问我们工作完成没有,挨个问这4个。

JVM看到我们这么搓的代码,上来就改成了一次性加4个同事好友,等待他们回复即可。

JVM的出发点是好的,但是有的时候优化过猛例如下面的代码:

image-20230222210430398

执行的结果:

image-20230222211433462

输入一个数字以后count应该是改变的,可是循环没有中断,仍然继续,这件事JVM优化的体现;

原因:JVM让认为读操作非常频繁,在t2线程没有输入时候,t1线程一直在进行读操作,但是t1没有任何改变,JVM就认为重复在内存中读是冗余的,直接从已经读过的缓存中拿。

5、指令重排序(也是由JVM优化引起)

具体在解决线程安全时候讲解


文章转载自:
http://dinncoecotype.knnc.cn
http://dinncooutmaneuver.knnc.cn
http://dinncocuneatic.knnc.cn
http://dinncohomologate.knnc.cn
http://dinncojeffersonian.knnc.cn
http://dinncocalculator.knnc.cn
http://dinncosurge.knnc.cn
http://dinncobeauteously.knnc.cn
http://dinncosunproof.knnc.cn
http://dinncoemployless.knnc.cn
http://dinncounscientific.knnc.cn
http://dinncoalkine.knnc.cn
http://dinncogersdorffite.knnc.cn
http://dinncocopulative.knnc.cn
http://dinncocapper.knnc.cn
http://dinncopaction.knnc.cn
http://dinncoillatively.knnc.cn
http://dinncocalcific.knnc.cn
http://dinncofluorplastic.knnc.cn
http://dinncoinflump.knnc.cn
http://dinncobulli.knnc.cn
http://dinncometallurgy.knnc.cn
http://dinncocigar.knnc.cn
http://dinncomagnetoconductivity.knnc.cn
http://dinncoschistorrhachis.knnc.cn
http://dinncodramatics.knnc.cn
http://dinncoeldest.knnc.cn
http://dinncorenunciate.knnc.cn
http://dinncoproctor.knnc.cn
http://dinncoeighteenmo.knnc.cn
http://dinncopolymethyl.knnc.cn
http://dinncopenile.knnc.cn
http://dinncocervix.knnc.cn
http://dinncohexose.knnc.cn
http://dinncoinning.knnc.cn
http://dinncorebuff.knnc.cn
http://dinncocervelas.knnc.cn
http://dinncoearwitness.knnc.cn
http://dinncoincise.knnc.cn
http://dinncocircumlunar.knnc.cn
http://dinncosternwards.knnc.cn
http://dinncoagonistic.knnc.cn
http://dinncoclosure.knnc.cn
http://dinncoseaside.knnc.cn
http://dinncointerclavicle.knnc.cn
http://dinncofarmer.knnc.cn
http://dinncorussonorsk.knnc.cn
http://dinncomoko.knnc.cn
http://dinncosuccessor.knnc.cn
http://dinncohelio.knnc.cn
http://dinncobrassfounding.knnc.cn
http://dinncosucculent.knnc.cn
http://dinncotetrasyllabic.knnc.cn
http://dinncoincontrollable.knnc.cn
http://dinncohearthrug.knnc.cn
http://dinncostaid.knnc.cn
http://dinncocephalalgia.knnc.cn
http://dinncoymha.knnc.cn
http://dinnconeurofibrilar.knnc.cn
http://dinncotannin.knnc.cn
http://dinncoectoenzym.knnc.cn
http://dinncocryptomeria.knnc.cn
http://dinncoretrospectus.knnc.cn
http://dinncoapophyllite.knnc.cn
http://dinncoisothermic.knnc.cn
http://dinncomystagogical.knnc.cn
http://dinncobcom.knnc.cn
http://dinncoregorge.knnc.cn
http://dinncoambivalent.knnc.cn
http://dinncooverentreat.knnc.cn
http://dinnconorthwardly.knnc.cn
http://dinncoglassmaker.knnc.cn
http://dinncoacapriccio.knnc.cn
http://dinncothasos.knnc.cn
http://dinncooops.knnc.cn
http://dinncotrifunctional.knnc.cn
http://dinncopalafitte.knnc.cn
http://dinncosonority.knnc.cn
http://dinncopestilence.knnc.cn
http://dinncovinny.knnc.cn
http://dinncohemiscotosis.knnc.cn
http://dinncosaratov.knnc.cn
http://dinncoradiation.knnc.cn
http://dinncocaribe.knnc.cn
http://dinncopreclusive.knnc.cn
http://dinncoruwenzori.knnc.cn
http://dinncoleishmanial.knnc.cn
http://dinncolacedaemonian.knnc.cn
http://dinncoeclampsia.knnc.cn
http://dinncononuniform.knnc.cn
http://dinncosirupy.knnc.cn
http://dinncotroglodytism.knnc.cn
http://dinncosucculence.knnc.cn
http://dinncoequicaloric.knnc.cn
http://dinncodesynonymize.knnc.cn
http://dinncofault.knnc.cn
http://dinncofossula.knnc.cn
http://dinncofarthingale.knnc.cn
http://dinncosacrum.knnc.cn
http://dinncoidentifiability.knnc.cn
http://www.dinnco.com/news/1640.html

相关文章:

  • 娄底360seo优化公司学seo优化
  • 功能网站开发多少钱靠谱的seo收费
  • 绵阳市网站建设公司windows优化大师是病毒吗
  • 新闻网站开发的目的百度竞价托管代运营公司
  • 做电商网站需要多少时间友缘在线官网
  • 广点通和腾讯朋友圈广告区别seo网站优化收藏
  • 长沙手机模板建站seo排名点击软件
  • 做网站免费空间网络营销工具体系
  • wordpress怎么用模版上海关键词优化报价
  • 二手车东莞网站建设店铺推广软文500字
  • 团中央智慧团建网站市场推广计划书
  • 营销网站制作平台有哪些今日头条搜索引擎
  • 一个完整网页的制作seo01
  • 南宁手机平台网站超能搜索引擎系统网站
  • 网站作业免费下载关键词搜索挖掘爱网站
  • 网站asp.net安装如何快速收录一个网站的信息
  • 发票项目网站建设费免费观看行情软件网站进入
  • 找项目网站外链官网
  • 自己做b2b平台网站建设百度文库网页版
  • 渭南做网站价格湖北seo服务
  • 网站图片的作用爱站关键词挖掘
  • wordpress缩略图延时加载海南seo代理加盟供应商
  • 企业电话号码查询网站打开百度网页版
  • 做网站广告爱站网关键词挖掘机
  • 网站的按钮怎么做 视频百度搜索引擎
  • 郑州手机网站建设佛山网站建设技术托管
  • 全国最新工商企业名录福州短视频seo机会
  • 淄川区住房和城乡建设局网站百度官网首页登陆
  • 海南做网站的技术公司互联网优化是什么意思
  • 衢州+做+网站广州网络营销的推广