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 中的 对象 和 引用 是面向对象技术的前提,本文旨在讨论如何理解它们的含义以及它们之间的关系。如有错误,还请指出。