- 博客(9)
- 收藏
- 关注
原创 cas知道吗?如何实现的?
CAS(Compare and Swap),即比较并替换,实现并发算法时常用到的一种技术。 CAS的思想很简单:三个参数,一个当前内存值V、旧的预期值A、即将更新的值B,当且仅当预期值A和内存值V相同时,将内存值修改为B并返回true,否则什么都不做,并返回false。 AtomicInteger使用Unsafe来实现cas机制,unsafe是CAS的核心类,由于Java方法无法直接访问底层系...
2018-08-21 23:34:12 2082
原创 Volatile的工作原理
1、保证变量可见性。2、禁止指令重排序。3、保证Double、Long的原子性。 线程修改完volatile变量后会将其存回主内存,其他线程如果想读取该变量必须重新从主内存中读取该变量。 http://ifeve.com/volatile/...
2018-08-21 23:33:30 356
原创 ThreadLocal是什么?底层如何实现?写一个例子呗。
ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,其实意思差不多。可能很多朋友都知道ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。 public T get() { } public void set(T value) { } public void remove() { } protected T initia...
2018-08-21 23:33:02 2217
原创 线程池用过吗?都有什么参数?底层如何实现的??
corePoolSize:核心池的大小,这个参数跟后面讲述的线程池的实现原理有非常大的关系。在创建了线程池后,默认情况下,线程池中并没有任何线程,而是等待有任务到来才创建线程去执行任务, 除非调用了prestartAllCoreThreads()或者prestartCoreThread()方法,从这2个方法的名字就可以看出,是预创建线程的意思,即在没有任务到来之前就创建corePoolS...
2018-08-21 23:30:12 3764
原创 hashmap和treemap什么区别?底层数据结构是什么?
HashMap:数组方式存储key/value,线程非安全,允许null作为key和value,key不可以重复,value允许重复,不保证元素迭代顺序是按照插入时的顺序,key的hash值是先计算key的hashcode值, 然后再进行计算,每次容量扩容会重新计算所以key的hash值,会消耗资源,要求key必须重写equals和hashcode方法。 默认初始容量16,加载因子0.75,扩...
2018-08-21 23:29:27 6724 1
原创 hashmap hashtable底层实现什么区别,hashtable和concurrenthashtable呢?
void createEntry(int hash, K key, V value, int bucketIndex) { Entry<K,V> e = table[bucketIndex]; //将该节点作为头节点 table[bucketIndex] = new Entry<>(hash, key, value, e);
2018-08-19 21:47:03 2712
原创 介绍一下java的集合框架
Java集合大致可以分为Set、List、Queue和Map四种体系,其中Set代表无序、不可重复的集合;List代表有序、重复的集合;而Map则代表具有映射关系的集合,Java 5 又增加了Queue体系集合,代表一种队列集合实现。 Set集合与Collection集合基本相同,没有提供任何额外的方法。实际上Set就是Collection,只是行为略有不同(Set不允许包含重复元素)。...
2018-08-19 21:43:12 457
原创 重写equals和hashCode
import java.util.Objects; public class User { private String name; private int age; private String passport; //getters and setters, constructor @Override public boolean equa...
2018-08-19 21:40:49 341
原创 从String.intern()来看Java内存模型及JVM
1,String.intern() 无论1.6还是1.7:String s = newString(“1”),生成了常量池中的“1” 和堆空间中的字符串对象。 jdk1.6之前,常量池是放在 Perm(永久代?) 区(属于方法区)中的,熟悉JVM的话应该知道这是和堆区完全分开的。 intern()方法在JDK1.6中的作用是:比如String s = new String(“SEU_Ca...
2018-08-19 21:39:04 233
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人