java volidate_volidate 学习

一:Volatile 变量具有synchronized的可见性,有序性 特性,但是不具备原子特性

二:java memory model(jmm) java 内存模型形象理解见下图

af3aea0fa87a

Java Memory Model

a:java 线程读取共享内存变量流程:

线程2 --> JMM 读取共享内存变量---> 放到本线程2工作内存中---> 线程2读取工作内存中的变量进行使用。

b:java 线程修改共享内存变量流程:

线程2--> 修改本线程工作内存中的变量-->jmm 自动把线程2的工作内存中的 修改过的 共享变量读取出来

去同步共享内存变量(备注:1.同时会通知其他线程共享内存变量已经改变,2: 其他线程中工作内存的共享变量失效。也就是说线程1 要使用共享变量,必须重新读取 共享内存变量到 本地工作内存)

c: 总结线程使用并修改共享内存变量流程:

读取(共享变量)-->操作(+-*% 共享变量)-->同步(共享变量)

三: volidate 关键字的作用:

读取(共享变量)-->操作(+-*% 共享变量)-->加锁-->同步(共享变量)

备注: jmm 根据线程2的工作内存 中的共享变量  去  同步  共享内存中的  共享变量之前加了一把锁。

这个动作之前,线程1可以对 自己工作内存中的共享变量 修改,但jmm 要去同步线程2对共享内存修改的时刻,

通知线程1中的 本地内存 共享变量  失效, 导致线程1 对本地工作内存 中的变量修改失效。这种情形就是 非原

子性操作了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/436755.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】ABP源码分析一:整体项目结构及目录

ABP是一套非常优秀的web应用程序架构,适合用来搭建集中式架构的web应用程序。 整个Abp的Infrastructure是以Abp这个package为核心模块(core)15个模块(module).其中13个依赖于Abp这个核心包。另外两个包(FluentMigration,Web.Resources)相对独…

【转】ABP源码分析二:ABP中配置的注册和初始化

一般来说,ASP.NET Web应用程序的第一个执行的方法是Global.asax下定义的Start方法。执行这个方法前HttpApplication 实例必须存在,也就是说其构造函数必然已完成了执行。 ABP开始的地方就是HttpApplication的构造函数。 如下图一,Abp定义了一…

【转】ABP源码分析三:ABP Module

Abp是基于模块化设计思想进行构建的。开发人员可以将自定义的功能以模块(module)的形式集成到ABP中。具体的功能都可以设计成一个单独的Module。Abp底层框架提供便捷的方法集成每个Module.下图是所有Abp自带的module.AbpModule是所有Module的基类&#x…

java weka 聚类_简单开源数据挖掘工具weka进行文本聚类

目前非代码的数据挖掘工具很多,但非开源,weka是一款开源软件。只要安装jdk环境就可使用(具体安装jdk可以百度)本文将论述如何不用代码,使用weka操作,通过与文档频数与单词权的特征选择方法进行文本聚类(数据为附件)第一步&#xf…

java 不识别enum_Java enum关键字不识别的快速解决办法

从别人那儿拷贝过来的myeclipse java工程,打开一看标红了一大片,仔细一看,原来是不识别enum关键字,这就有点尴尬了。我自己重新建了一个java工程,测试了下,假如我在新建工程的时候选择javase-1.6&#xff1…

【转】ABP源码分析四:Configuration

核心模块的配置 Configuration是ABP中设计比较巧妙的地方。其通过AbpStartupConfiguration,Castle的依赖注入,Dictionary对象和扩展方法很巧妙的实现了配置中心化。配置中心化是一个支持模块开发的框架必备功能。 ABP中核心功能模块中的一些功能的运行时…

【转】ABP源码分析五:ABP初始化全过程

ABP在初始化阶段做了哪些操作,前面的四篇文章大致描述了一下。 为个更清楚的描述其脉络,做了张流程图以辅助说明。其中每一步都涉及很多细节,难以在一张图中全部表现出来。每一步的细节(会涉及到较多接口,类&#xff0…

【转】ABP源码分析六:依赖注入的实现

ABP的依赖注入的实现有一个本质两个途径:1.本质上是依赖于Castle这个老牌依赖注入的框架。2.一种实现途径是通过实现IConventionalDependencyRegistrar的实例定义注入的约定(规则),然后通过IocManager来读取这个规则完成依赖注入。…

【转】ABP源码分析七:Setting 以及 Mail

本文主要说明Setting的实现以及Mail这个功能模块如何使用Setting. 首先区分一下ABP中的Setting和Configuration。 Setting一般用于需要通过外部配置文件(或数据库)设置的简单类型数据(一般就是字符串),比如SMTP HOST.…

【转】ABP源码分析八:Logger集成

ABP使用Castle日志记录工具,并且可以使用不同的日志类库,比如:Log4Net, NLog, Serilog... 等等。对于所有的日志类库,Castle提供了一个通用的接口来实现,我们可以很方便的处理各种特殊的日志库,而且当业务需…

java并发锁获取的方式_Java精通并发-notify方法详解及线程获取锁的方式分析

wait():在上一次https://www.cnblogs.com/webor2006/p/11404521.html中对于无参数的wait()方法的javadoc进行了解读,而它是调用了一个参数的重载方法,回忆下:其中如果传0代表无限等待,否则是等待指定的时间就会停止等待…

【转】ABP源码分析九:后台工作任务

文主要说明ABP中后台工作者模块(BackgroundWorker)的实现方式,和后台工作模块(BackgroundJob)。ABP通过BackgroundWorkerManager来管理BackgroundJobManager,然后通过BackgroundJobManager来管理Background…

【转】ABP源码分析十:Unit Of Work

ABP以AOP的方式实现UnitOfWork功能。通过UnitOfWorkRegistrar将UnitOfWorkInterceptor在某个类被注册到IOCContainner的时候,一并添加到该类在容器中对应的ComponentModel的Interceptors集合中。总结一句话就是,UOW的功能是通过自定义Castle拦截器来实现…

【转】ABP源码分析十一:Timing

Timing这个简单实用的功能主要用来以统一的方式表示时间。因为ABP中有大量的module,另外还支持自定义module,所以将时间统一表示为local时间(默认)或utc时间是必要的。 IClockProvider:提供获取当前时间和标准化时间的接口。 UtcClockProvide…

【转】ABP源码分析十二:本地化

本文逐个分析ABP中涉及到localization的接口和类,以及他们之间的关系。本地化主要涉及两个方面:一个是语言(Language)的管理,这部分相对简单。另一个是语言对应得本地化资源(Localization)的管理…

【转】ABP源码分析十三:缓存Cache实现

ABP中有两种cache的实现方式:MemoryCache 和 RedisCache. 如下图,两者都继承自ICache接口(准确说是CacheBase抽象类)。ABP核心模块封装了MemoryCache 来实现ABP中的默认缓存功能。 Abp.RedisCache这个模块封装RedisCache来实现缓存…

java 酒店预定 app_Android应用源码酒店在线预定app项目全套

【实例简介】Android应用源码酒店在线预定app项目全套【实例截图】【核心代码】package com.bn.summer;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;…

【转】ABP源码分析十四:Entity的设计

IEntity<TPrimaryKey>: 封装了PrimaryKey&#xff1a;Id,这是一个泛型类型 IEntity: 封装了PrimaryKey&#xff1a;Id,这是一个int类型 Entity<TPrimaryKey> &#xff1a;支持主键是泛型类型的Entity Entity&#xff1a;支持主键是int类型的Entity IHasCreation…

【转】ABP源码分析十六:DTO的设计

IDTO:空接口&#xff0c;用于标注Dto对象。 ComboboxItemDto&#xff1a;用于combobox/list中Item的DTO NameValueDto<T>/NameValueDto:用于name value键值对的DTO&#xff0c; name为string类型&#xff0c; value为泛型或string类型。 Entity Dto IEntityDto<TPri…

php session 机制,Cookie、Session机制详解及PHP中Session处理

会话机制Cookie/Session&#xff1a;在web应用中&#xff0c;常用的会话追踪机制是Cookie和Session。而Cookie是通过在浏览器里记录确定用户身份&#xff0c;Session在服务器端记录信息确定用户身份。Http协议&#xff1a;http协议本身是无状态的&#xff0c;也就是说我们无法通…