看到HashSet的源代码的时候,有一个关键字不太认识它。。transient,百度整理之:

Java的Serialization提供了一种持久化对象实例的机制,当持久化对象时,可能有一些特殊的对象数据成员,我们不想使用Serialization机制来保存它,可以在这个field之前加上关键字transient,表示这个field不是该对象串行化的一部分。例如password。

Volatile修饰的成员变量在每次被线程访问时,都强迫从主内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到主内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。   
  
Java语言规范中指出:为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比。   
  
这样当多个线程同时与某个对象交互时,就必须要注意到要让线程及时的得到共享成员变量的变化。   
  
而volatile关键字就是提示VM:对于这个成员变量不能保存它的私有拷贝,而应直接与共享成员变量交互。

最新文章

  1. 一文搞懂HMM(隐马尔可夫模型)
  2. 存储过程 Row_number() 分页
  3. Oracle SQL explain/execution Plan
  4. IOS atomic与nonatomic,assign,copy与retain的定义和区别
  5. C# 调用Adodb对Access数据库执行批量插入
  6. WinCE项目应用之RM905a+活度计远程检定方法研究
  7. .Neter玩转Linux系列之一:初识Linux
  8. Quartz入门案例与介绍(与spring整合)
  9. 【c#】RabbitMQ学习文档(二)Work Queues(工作队列)
  10. mybatis 使用auto mapping原理实现表间关联
  11. css常用布局
  12. tar 命令 简易使用方法
  13. shell编程中的if语句
  14. how to use boost program options
  15. 关于Vue中的 render: h => h(App) 具体是什么含义?
  16. neutron 的 quota design
  17. mysql报错1105 -without an explicit primary key with pxc_strict_mode = ENFORCING or MASTER
  18. llg的农场(farm)
  19. HTML中显示的文字自动换行
  20. numpy 排序, 查询功能

热门文章

  1. Socket `accept queue is full ` 但是一个连接需要从SYN->ACCEPT
  2. PAT甲级1074 Reversing Linked List (25分)
  3. Mybatis动态传入tableName--非预编译(STATEMENT)
  4. vite2 + vite.config.js 比较坑的环境变量,vite2模式的使用
  5. [51nod1587]半现串
  6. HCNP Routing&Switching之组播技术-组播基础
  7. Python迭代器生成器与生成式
  8. 洛谷 P3704 [SDOI2017]数字表格(莫比乌斯函数)
  9. 洛谷 P3714 - [BJOI2017]树的难题(点分治)
  10. 模版 动态 dp