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

无锡网站建设 微信搜索引擎营销方案

无锡网站建设 微信,搜索引擎营销方案,wordpress lover,网站作业导致的原因 内存可见性问题的出现主要是因为编译器优化多线程导致的 示例代码 package 线程安全问题;import java.util.Scanner;/*** Created with IntelliJ IDEA.* Description:* User: wuyulin* Date: 2023-07-26* Time: 13:49*/ public class Demo2 {private volatile sta…

导致的原因

        内存可见性问题的出现主要是因为编译器优化多线程导致的

示例代码

package 线程安全问题;import java.util.Scanner;/*** Created with IntelliJ IDEA.* Description:* User: wuyulin* Date: 2023-07-26* Time: 13:49*/
public class Demo2 {private volatile static int isQuit=0;public static void main(String[] args) {Thread A=new Thread(()->{while (isQuit==0){}});Thread B=new Thread(()->{Scanner sc=new Scanner(System.in);System.out.print("isQuit=");isQuit=sc.nextInt();});A.start();B.start();}
}

出现的问题

        在上述代码中如果isQuit成员变量不加上volatile关键字的话,该程序就会出现bug,即使在B线程中修改了isQuit的值,在A线程中依然不会退出循环

出现问题的原因

        出现该问题的原因是编译器对我们的代码进行了优化

         因为isQuit==0分为两步操作,1.将isQuit从内存中读取到寄存器中,2.在寄存器中进行isQuit与0的比较
    而从内存中读取数据到寄存器中要消耗很长的时间,在寄存器中进行isQuit与0的比较消耗的时间很短
    编译器发现经过了很多次的循环isQuit的值都没有改变,于是做了一个大胆的决定,将从内存中读取isQuit这个操作优化掉,采用读取寄存器中的值,效率便得到了极大的提高
    但是此时在B线程中修改isQuit在内存中的值,A线程由于已经不在内存中读取isQuit的值了,所以A线程的循环不会受到影响,就导致了无法停止A线程的循环

 
解决的方法

        解决的方法:在isQuit成员变量声明时加上volatile(易变的)关键字,表示该成员变量是易变的,此时编译器就不会优化掉去内存中读取isQuit值的操作,这样B线程改变了内存中isQuit的值,A线程便能够读取到,结束循环

http://www.hkea.cn/news/706737/

相关文章:

  • wordpress的数据库在那里百度seo如何快速排名
  • wordpress手机客服代码免费seo快速排名工具
  • web网站开发作品关键词歌词图片
  • 汕头行业网站seo培训公司
  • 网站背景图片优化关键词歌曲免费听
  • 郑州做网站哪家专业我要发布信息
  • 西安做网站优化的公司石家庄seo按天扣费
  • 2022年西安封城通知自动app优化下载
  • 无锡做网站哪家公司好一个公司可以做几个百度推广
  • 专题网站建设工作关键词林俊杰无损下载
  • adobe 网站开发软件软文写作兼职
  • 英文网站建设 淮安免费培训网站
  • 隔离需要多少钱湖南网站seo找行者seo
  • wordpress简单企业站seo怎么刷排名
  • 网站建设与运维泉州全网推广
  • 网站建站哪个公司好一点营销咨询服务
  • 值得玩的网页游戏北京seo营销培训
  • 中国建设银行网站分期通百度推广登录平台网址
  • 公司内部网站源码新闻软文推广案例
  • vf建设银行网站谷歌seo排名
  • 如何申请商业服务器武汉seo工厂
  • 祥云平台英文网站微博指数查询入口
  • 公司网站建设准备资料今日重大财经新闻
  • 发布网站后备案免费网站建站页面
  • 浙江建设职业技术学院迎新网站做一个网站要多少钱
  • axure做网站好不好手机百度问一问
  • 开发微信小程序的流程广州seo优化电话
  • 小企业网站建设和管理全能搜
  • 无棣县建设局网站游戏优化大师下载安装
  • 小额贷款 网站模板品牌推广软文