首页 > 编程语言 >java面试 (12)- Valiolate原理?是线程安全的吗?

java面试 (12)- Valiolate原理?是线程安全的吗?

时间:2023-05-28 09:13:31浏览次数:30  
标签:Valiolate 12 java 变量 指令 volatile 内存 重排 线程

1:导致线程问题的原因:

  抢占式执行

  多个线程同时修改了同一个变量

  非原子性操作

  内存可见性问题

  指令重排问题

2:并发编程三大特性

  可见性

  原子性

  有序性

3:volatile关键字

  3.1 volatile解决了内存可见性和指令重排序的问题

    写volatile变量:改变线程工作内存中的valatile变量的值,会立即从工作内存刷新到主内存中,

       新值对所有线程立即更新。

              读volatile变量:先从主内存读取volatile变量的最新值到线程的工作内存中,再从工作内存中读取volatile变量的副本值。

              在多线程环境下volatile修饰的变量值一定是最新的。

              volatile避免了指令重排优化(在单线程的情况下,指令重排优化没有问题,但是多线程的情况下有有问题),实现了有序性。

标签:Valiolate,12,java,变量,指令,volatile,内存,重排,线程
From: https://www.cnblogs.com/liufei1983/p/17437759.html

相关文章

  • 1. java + react 实现 HRM
    1.云服务的三种方式1.1IAAS基础设施即服务,只会提供基础的设施,eg:服务器,网络等;1.2PAAS平台即服务,提供平台,可以把自己写好的代码部署到平台上;1.3SAAS软甲即服务eg:hrm,cms,crm等;提供所有的服务;【部署到互联网】;......
  • 用JavaScript求1000以内的质数
    varprimes=[2];//2是质数,先将其加入质数数组中for(vari=3;i<=1000;i++){varisPrime=true;//假设i是质数for(varj=0;j<primes.length&&primes[j]<=Math.sqrt(i);j++){if(i%primes[j]===0){isPrime=false;//如果i可......
  • java后端开发流程总结
    流程简介:1、数据库见表(工具建表和cmd命令行(sql语言)两种方式)2、前端页面准备(html+css+js)3、controler层编写(针对具体功能编写,比如登录功能,在这一层获取前台输入的账号密码。这是就可以等待来自数据库里的数据了)4、接着编写serverdao层依据controler层的功能编写相应的get......
  • JAVA的springboot私人健身与教练预约管理系统、健身房管理系统,附源码+数据库+lw文档+P
    1、项目介绍任何系统都要遵循系统设计的基本流程,本系统也不例外,同样需要经过市场调研,需求分析,概要设计,详细设计,编码,测试这些步骤,基于java技术、springboot框架、B/S机构、Mysql数据库设计并实现了私人健身与教练预约管理系统。系统主要包括首页,个人中心,用户管理,教练管理,健身项目......
  • 第一章 初始java
    第一章初识java语言本课目标了解Java虚拟机与跨平台原理;熟练掌握安装、配置JDK开发环境;熟练掌握使用记事本开发Java;程序理解Java编译原理;会使用MyEclipse开发Java程序java技术平台javaSE-----基础核心javaEE-----webjavaME------移动端环境的搭建和配置jd......
  • java——微服务——spring cloud——Eureka——服务发现
         修改:  第一步:     第二步:       完成后,进行重启: 访问101和102,看是否已经对userservice进行负载均衡访问:         从日志看是否进行了负载均衡访问:               ......
  • java——微服务——spring cloud——Eureka——插叙——服务访问——Demo——示例演示
                 user查询:             order订单查询:            user服务,查询user对象:            查询order对象:            ......
  • elasticsearch-7.12.1集群设置账号密码(亲测可用)
    ES7.7以后的版本将安全认证功能免费开放了。并将X-pack插件集成了到了开源的ElasticSearch版本中。1.在集群的“主节点”上生成证书切换到elastsearch的目录下,使用下列命令生成证书bin/elasticsearch-certutilcert-outconfig/elastic-certificates.p12-pass""2.将生成......
  • this in Javascript
    Whatis this?InJavaScript,the this keywordreferstoan object.Which objectdependsonhow this isbeinginvoked(usedorcalled).The this keywordreferstodifferentobjectsdependingonhowitisused:Inanobjectmethod, this refersto......
  • 阅读《java并发编程实战》第三章
    阅读《java并发编程实战》第三章第一个例子,没有重现publicclassNoVisibility{privatestaticbooleanready;privatestaticintnumber;privatestaticclassReaderThreadextendsThread{publicvoidrun(){while(!ready){......