Volatile:

  Volatile修饰的成员变量在每次被线程访问时,都强迫从主内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到主内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。

  Java语言规范中指出:为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比。

  这样当多个线程同时与某个对象交互时,就必须要注意到要让线程及时的得到共享成员变量的变化。

  而volatile关键字就是提示VM:对于这个成员变量不能保存它的私有拷贝,而应直接与共享成员变量交互。

  使用建议:在两个或者更多的线程访问的成员变量上使用volatile。当要访问的变量已在synchronized代码块中,或者为常量时,不必使用。

  由于使用volatile屏蔽掉了VM中必要的代码优化,所以在效率上比较低,因此一定在必要时才使用此关键字。

transient

  Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想 用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字transient。 **transient是Java语言的关键字,用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,**transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。
  

码农小汪-Volatile和Transient相关推荐

  1. 码农小汪-设计模式之-Builder模式

    建造者模式 将一个复杂的对象的构建与它的表示分离,使得同样构建的过程中可以创建不同的表示.这个话语看起来,好累啊!真心很难理解. 下面是它的UML图: 抽象建造者角色(Builder):为创建一个Pr ...

  2. 码农小汪-Hibernate学习8-hibernate关联关系注解表示@OneToMany mappedBy @ManyToMany @JoinTable...

    近期我也是有点郁闷,究竟是程序中处理关联关系.还是直接使用外键处理关联关系呢?这个的说法不一致!程序中处理这样的关联关系的话.自己去维护这样的约束.这样的非常乐观的一种做法!或者是直接在数据库中处理这 ...

  3. 码农小汪-设计模式之-命令模式

    大话设计模式的例子讲的非常的好,理解起来也方便!有时候忘了.想到这些特殊的例子感觉就是特别爽. 烤羊肉串带来的思考! 路边摊羊肉串: 老板,我这里排的比较先啊,我最先给钱.老板这个没有熟啊.我的是 辣 ...

  4. 码农翻身全年文章精华

    在码农翻身公众号写了一年多, 最大的体会就是:原创真心不易! 每天思考的最大问题就是: 下一篇文章写啥? 在大家的支持和鼓励下,还是坚持了下来,  回头看看走过的路,这一年过得还算充实. 很快就要过年 ...

  5. 码农翻身 各章节链接

    大话编程 我是一个线程 我是一个Java class Javascript: 一个屌丝的逆袭 Java:一个帝国的诞生 JSP:一个装配工的没落 TCP/IP 之 大明王朝的邮差 TCP/IP 之 大 ...

  6. 码农翻身全年文章精华2016

    在码农翻身公众号写了一年多, 最大的体会就是:原创真心不易! 每天思考的最大问题就是: 下一篇文章写啥? 在大家的支持和鼓励下,还是坚持了下来,  回头看看走过的路,这一年过得还算充实. 很快就要过年 ...

  7. 德国码农开发抢厕纸神器,再也不用愁了

    ,点击 欧盟IT那些事 关注我们 公告:因企鹅审核规定,本公众号从<德国IT那些事>更名为<欧盟IT那些事>. 厕纸在手,天下我有! 疫情中由于欧美人民对厕纸的蜜汁喜爱,导致超 ...

  8. 身价过亿的冰山御萝对小码农说你液晶能显示吗

    文章目录 小码农为了御萝,咳咳,为了知识怎么敢说液晶不显示啊 ==联动文章 [身价过亿的冰山御萝的姐姐对小码农说你有大一点的液晶吗](https://blog.csdn.net/diandengren ...

  9. 对精致码农大佬的 [理解 volatile 关键字] 文章结论的思考和寻找真相

    一:背景 1. 讲故事 昨天在园里的编辑头条看到 精致码农大佬 写的一篇题为:[C#.NET 拾遗补漏]10:理解 volatile 关键字 (https://www.cnblogs.com/will ...

最新文章

  1. Sangfor_AC用户不在线但在“在线用户管理”里有显示
  2. 【HAOI2014】走出金字塔
  3. tomcat架构分析(valve源码导读)【转】
  4. 科大讯飞cordova语音插件填坑及api介绍
  5. 构造函数= default;_Python Collections之defaultdict 和 default_factory关系
  6. readkeyboard方法_Linux笔记(12)| 几种并发式IO的实现方法
  7. Retrofit学习入门
  8. 使用禅道Docker安装包安装
  9. Java中的数组和List
  10. JPM Coin三部曲 (上) :深入理解摩根幣的運作
  11. SSH Mybatis 框架
  12. 替代 NetMeeting 的多人屏幕共享工具 InletexEMC 国外出品,永久免费
  13. excel换行快捷键_13个excel快捷键,学会他们,让你的1秒钟,抵得上同事的5分钟...
  14. 2022年fw保研经验(东南大学网安、湖南大学计科学硕、中科院沈阳自动化所,最终东南网安)
  15. hive动态分区 MapReduce 虚拟内存不足
  16. qt在window实现二维码识别
  17. 3分钟教你如何用代码向心爱的女生表白
  18. 一次简单的流量控制实现
  19. 你问我答:小匠,如何像你一样,做一个订阅号挣它 100 W?
  20. python学习小组分组程序_【Python】每日一练:学生学习小组分组程序

热门文章

  1. 三年级信息技术用计算机娱乐,三年级上册信息技术教案
  2. 112123---123456
  3. 【C/C++ 经典小程序(一)】
  4. linux 相机软件,镜像相机app
  5. 基于JavaSDK实现微信支付,springboot封装签名过程,直接调用controller层实现调起微信支付接口
  6. mysql 显示表_显示MYSQL表信息的方法
  7. go show 和 no show问题
  8. 给自己立一个flag吧
  9. swagger2 使用教程
  10. 众包置信度:改进众包数据标记的贝叶斯推断