Java 中的 volatile
volatile 是轻量级的 synchronized,其在多处理器中保证了共享变量的可见性
,即当一个线程修改一个共享变量时,另一个线程会读到这个修改的值。但 volatile 不能保证原子性
(例如自增操作),详细的说明将会在下文进行展开。保证并发程序正确执行还需要做到有序性
,满足以上三个原则,才能够正确的执行并发程序。而本文将对 volatile 关键字进行详细解释,结合具体例子的同时说明 volatile 关键字的使用场景。
volatile 是轻量级的 synchronized,其在多处理器中保证了共享变量的可见性
,即当一个线程修改一个共享变量时,另一个线程会读到这个修改的值。但 volatile 不能保证原子性
(例如自增操作),详细的说明将会在下文进行展开。保证并发程序正确执行还需要做到有序性
,满足以上三个原则,才能够正确的执行并发程序。而本文将对 volatile 关键字进行详细解释,结合具体例子的同时说明 volatile 关键字的使用场景。
前文对 JDK1.8 中的 HashMap 的在原理实现以及相关操作进行了说明,介绍了基于数组(Node)+链表(尾插)+红黑树
的数据结构,以及resize()
的过程。而本文将介绍与 HashMap 较为相似的HashTable
,同样也是基于数组(Entry)+链表
实现的,但HashTable
是线程同步的(synchroinzed),在某些方面又有一些区别,下面将分别介绍。
本文是对 JDK1.8 中 LinkedHashMap 的分析与总结,在阅读源码的同时加深对其提供的方法的使用,以便更好的理解。
本文是对 JDK1.8 中 LinkedList 的分析与总结,在阅读源码的同时加深对其提供的方法的使用,以便更好的理解。
本文是对 JDK1.8 中 ArrayList 的分析与总结,在阅读源码的同时加深对其提供的方法的使用,以便更好的理解。
很久没有复习单例模式了,今天做一个笔记,对 Java 中的单例模式做一个总结,以做备忘。
HapMap 中的 get 和 put 方法在 O(1) 的时间内即可完成,如此快速存取方式到底是怎么实现的?本文将对 HashMap 中的主要方法(get、put、resize)进行说明,对应的版本为 JDK 1.8。不过,为了更加详细的了解 HashMap 的优化过程,同时也会与 JDK 1.7 中的 HashMap 进行比较,从而对 HashMap 有一个较为全面的认识。
本文将介绍 MySQL(My Structured Query Language)数据库的基本概念与以及在日常开发中的使用,包括对数据的增删改查操作、子查询、联结表、组合查询、存储过程、游标、触发器、事务管理等知识的总结。
更好的理解 Java 中的 对象
和 引用
是面向对象技术的前提,本文旨在讨论如何理解它们的含义以及它们之间的关系。如有错误,还请指出。