自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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关注的人

提示
确定要删除当前文章?
取消 删除