自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

转载 ConcurrentHashMap

public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V>, Serializablejdk1.8中初始容量,扩容要求和HashMap相同COncurrentHashMap中:相较HashMap中,添加了volatile,没...

2020-03-19 21:41:21 120

原创 LockSupport

JDK 中的rt.jar 包里面的LockSupport 是个工具类,它的主要作用是挂起和唤醒线程,该工具类是创建锁和其他同步类的基础。LockSupport 类与每个使用它的线程都会关联一个许可证,在默认情况下调用LockSupport 类的方法的线程是不持有许可证的。LockSupport 是使用Unsafe 类实现的。public class ParkTest { publi...

2020-03-15 14:02:37 150

原创 CopyOnWriteArrayList

public class CopyOnWriteArrayList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable

2020-03-13 16:59:26 261

原创 jdk8 新增原子操作类----------LongAdder

AtomicLong 通过CAS 提供了非阻塞的原子性操作,相比使用阻塞算法的同步器来说它的性能己经很好了,但是JDK 开发组并不满足于此。使用AtomicLong 时,在高并发下大量线程会同时去竞争更新同→个原子变量,但是由于同时只有一个线程的CAS 操作会成功,这就造成了大量线程竞争失败后,会通过无限循环不断进行自旋尝试CAS 的操作, 而这会白白浪费CPU 资源。因此JDK 8 新增了一...

2020-03-12 22:20:23 155

原创 JUC包中原子操作类----AtomicLong

AtomicLong 是原子性递增或者递减类,其内部使用Unsafe 来实现public class AtomicLong extends Number implements java.io.Serializableprivate static final Unsafe unsafe = Unsafe.getUnsafe(); private static final long...

2020-03-11 23:19:32 309

转载 CAS

CAS 即Compare and Swap ,其是JDK 提供的非阻塞原子性操作, 它通过硬件保证了比较更新操作的原子性。JDK 里面的Unsafe 类提供了一系列的compareAndSwap *方法CAS 的思想很简单:三个参数,一个当前内存值 V、旧的预期值 A、即将更新的值 B,当且仅当预期值 A 和内存值 V 相同时,将内存值修改为 B 并返回 true,否则什么都不做,并返回 fa...

2020-03-11 21:50:51 132

原创 Random & ThreadlocalRandom

总结:每个Random 实例里面都有一个原子性的种子变量用来记录当前的种子值,当要生成新的随机数时需要根据当前种子计算新的种子并更新回原子变量。在多线程下使用单个Random 实例生成随机数时,当多个线程同时计算随机数来计算新的种子时, 多个线程会竞争同一个原子变量的更新操作,由于原子变量的更新是CAS 操作,同时只有一个线程会成功,所以会造成大量线程进行自旋重试, 这会降低并发性能,所以Thre...

2020-03-11 16:49:25 394

转载 经典智力题

一、微软58题A.逻辑推理1、你让工人为你工作7天,给工人的回报是一根金条。金条平分成相连的7段,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给你的工人付费?  2、请把一盒蛋糕切成8份,分给8个人,但蛋糕盒里还必须留有一份。  3、小明一家过一座桥,过桥时是黑夜,所以必须有灯。现在小明过桥要1秒,小明的弟弟要3秒,小明的爸爸要6...

2020-03-10 11:25:48 13017

原创 Synchronized & volatile

synchronized 关键字介绍synchronized 块是Java 提供的一种原子性内置锁, Java 中的每个对象都可以把它当作一个同步锁来使用, 这些Java 内置的使用者看不到的锁被称为内部锁,也叫作监视器锁。线程的执行代码在进入synchronized 代码块前会自动获取内部锁,这时候其他线程访问该同步代码块时会被阻塞挂起。拿到内部锁的线程会在正常退出同步代码块或者抛出异常后或...

2020-03-09 22:15:35 122

原创 InheritableThreadLocal

public class InherThreadTest { public static ThreadLocal<String> threadLocal = new ThreadLocal<>(); public static void main(String[] args) { threadLocal.set("hello worl...

2020-03-09 18:58:16 189

转载 ThreadLocal

工作笔记整理:ThreadLocal,业务需求需要每个线程保存一份变量(打印时打印出显示的内容而不是最新的内容),引入了这个概念对于某一ThreadLocal来讲,他的索引值i是确定的,在不同线程之间访问时访问的是不同的table数组的同一位置即都为table[i],只不过这个不同线程之间的table是独立的。 对于同一线程的不同ThreadLocal来讲,这些ThreadLoca...

2020-03-08 23:46:49 133

转载 几种多线程实现方式的优缺点

使用继承方式的好处是方便传参,你可以在子类里面添加成员变量,通过set方法设置参数或者通过构造函数进行传递,使用Runnable 方式,则只能使用主线程里面被声明为final 的变量。不好的地方是Java 不支持多继承,如果继承了Thread 类,那么子类不能再继承其他类,而Runable 则没有这个限制。前两种方式都没办法拿到任务的返回结果,但是Futuretask 方式可以。...

2020-03-08 16:38:41 1378

转载 Hashtable和HashMap的区别

https://www.cnblogs.com/williamjie/p/9099141.html1、继承的父类不同 Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类。但二者都实现了Map接口。Hashtable:public class Hashtable<K,V> extends Dictio...

2020-03-08 12:43:26 86

原创 SynchronizedMap

引入了mutex互斥锁,其他的都是调用的map方法 private static class SynchronizedMap<K,V> implements Map<K,V>, Serializable { private static final long serialVersionUID = 19781984796590227...

2020-03-07 23:35:07 244

原创 HashMap

HashMap简介:HashMap 主要用来存放键值对,它基于哈希表的Map接口实现,是常用的Java集合之一。JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的(“拉链法”解决冲突).JDK1.8 以后在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为 8)时,将链表转化为红黑树(将链表转换成红黑树前会...

2020-03-05 23:50:46 98

原创 LinkedList

emmmm,大部分好像就是单纯的链表操作总结:线程不安全 modCount,计数,和arraylist中一样的作用 双向链表 LinkedList没有实现RandomAccess https://blog.csdn.net/weixin_39148512/article/details/79234817 实现了RandomAccess接口的list,优先选...

2020-03-05 22:54:27 122

原创 ArrayList

ArrayList简介:线程不安全---add方法等都是非原子性的,在扩容时先判断是否需要扩容,然后再添加,很容易发生错误 容器底层采用数组存储,默认初始容量10,每次扩容为1.5倍 ArrayList随机元素时间复杂度O(1),插入删除操作需大量移动元素,效率较低 继承自AbstractList,实现了List,RandomAccess,Cloneable,和Serializable接...

2020-03-05 21:58:51 209

原创 JVM内存分配与垃圾回收

1.JVM内存分配与回收上图所示的 eden 区、s0("From") 区、s1("To") 区都属于新生代,tentired 区属于老年代。大对象(需要大量连续内存空间的对象(比如:字符串、数组))直接进入老年代:为了避免为大对象分配内存时由于分配担保机制带来的复制而降低效率。大部分情况,对象都会首先在 Eden 区域分配,在一次新生代垃圾回收后,如果对象还存活,则会进入 s...

2020-03-03 23:46:18 172

转载 对象的访问定位

建立对象就是为了使用对象,我们的Java程序通过栈上的 reference 数据来操作堆上的具体对象。对象的访问方式有虚拟机实现而定,目前主流的访问方式有①使用句柄和②直接指针两种: 句柄:如果使用句柄的话,那么Java堆中将会划分出一块内存来作为句柄池,reference 中存储的就是对象的句柄地址,而句柄中包含了对象实例数据与类型数据各自的具体地址信息;息 直接指针:如果使...

2020-03-03 18:29:29 239

转载 对象的内存布局

在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(Header),实例数据(Instance Data)和对齐填充(Padding)。也就是说 JAVA对象 = 对象头 + 实例数据 + 对象填充一、对象头:对象头由两部分组成,一部分用于存储自身的运行时数据哈希码、GC分代年龄、锁状态标志等等),称之为 Mark Word, 一部分是类型指针,及对象指...

2020-03-03 17:44:30 92

转载 对象的创建

3.1 对象的创建①类加载检查:虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行相应的类加载过程。②分配内存:在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需的内存大小在类加载完成后便可确定,为对象分配空间的任务等同于把一块确定大小的内存...

2020-03-03 17:28:46 110

原创 类的加载连接与初始化过程详解

类型的加载、连接与初始化过程,都是在程序运行期间完成的加载:最常见为将硬盘的class文件加载到内存中 查找并加载类的二进制数据连接:将类与类之间的关系确定好并对字节码的处理、验证、校验等,类与类之间的调用等 -验证:确保被加载的类的正确性 -准备:为类的静态变量分配内存,并将其初始化为默认值 -解析:把类中的符号引用...

2020-03-03 12:03:27 309

原创 String和常量池

查看常量池方法,在终端中输入,其中test为类名javap -verbose test上述命令看到的内容解析:https://www.cnblogs.com/qingfengyiran-top1/p/11300654.html直接使用双引号声明出来的 String 对象会直接存储在常量池中。 如果不是用双引号声明的 String 对象,可以使用 String 提供的 inter...

2020-03-03 11:46:56 220

转载 Java运行时数据区域

主要参考:https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/jvm/Java%E5%86%85%E5%AD%98%E5%8C%BA%E5%9F%9F.md#%E5%85%AC%E4%BC%97%E5%8F%B7 《深入理解 Java 虚拟机:JVM 高级特性与最佳实践(第二版》 Java 虚拟机在执行 Java 程序...

2020-03-03 10:52:55 400

原创 setContentType与setCharacterEncoding的区别

setCharacterEncoding:只是设置字符的编码方式setContentType:除了可以设置字符的编码方式还能设置文档内容的类型使用方式:response.setContentType("text/html;charset=utf-8");response.setCharacterEncoding("utf-8");...

2019-12-25 10:30:29 763

原创 链表添加next节点对象,debug报错,run正常

java 剑指offer过程中添加链表添加节点报错的问题

2019-11-18 21:49:01 264

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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