02 2019 档案
摘要:这里对几个常见的的名词进行介绍 Executor 这是个接口,只声明了一个方法—— Executors 然后是Executors类,这个可以看作是个公共类,它提供了许多强大有用的获取线程池的static方法: 1.public static ExecutorService newFixedThrea
阅读全文
摘要:digest synchronized已经提供了锁的功能,而且还是Java的内置特性,那为什么还要出现lock呢? 用一句话来讲就是——synchronized可以实现同步,但太死板了它的同步机制;lock可以提供更灵活更丰富的同步、并发机制,提供了许多有用的功能。 synchronized的缺陷:
阅读全文
摘要:volatile就可以说是java虚拟机提供的最轻量级的同步机制 特性: 1.保证共享变量的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的——要了解主存、高速缓存还有Java内存模型中线程的工作内存、主存等概念。 2.禁止指令重新排序,一定程度上保证有序性。——要理解Java
阅读全文
摘要:上一篇博客虽然题目叫内置锁的基本使用,但其实也是讲synchronized关键字的使用的。这篇博客是在看了许多大佬的博客记录后总结出的synchronized更底层的知识和原理。 一、synchronized的原理 同步块的monitor指令 我们先通过反编译下面的代码来看看Synchronized
阅读全文
摘要:一、简单的锁知识 关于内置锁 Java具有通过synchronized关键字实现的内置锁,内置锁获得锁和释放锁是隐式的,进入synchronized修饰的代码就获得锁,走出相应的代码就释放锁。 java内置锁是一个互斥锁,这就是意味着最多只有一个线程能够获得该锁,当线程A尝试去获得线程B持有的内置锁
阅读全文
摘要:一、线程的状态 (参考文章:https://blog.csdn.net/a58220655/article/details/76695142) 状态介绍 新建(new):处于该状态的时间很短暂。已被分配了必须的系统资源,并执行了初始化。表示有资格获得CPU时间。调度器可以把该线程变为runnable
阅读全文
摘要:问题背景 (下面的所有内容都是根据书上的Serial/Serial Old收集器下的情况) 在《深入理解JVM》一书中的——3.6.3长期存活的对象将进入老年代的介绍中, 一个例子的jvm参数中加了这一行 意思是希望每次新生代gc后,可以跟踪Survivor区中的对象的年龄分布。 然后还设置了 这是
阅读全文
摘要:首先是关于新生代中的内存分布的描述: 新生代中的对象都是“朝生夕死”的对象,所以每次gc存活的对象很少,于是在新生代中采用的垃圾回收算法是“复制算法”。 将新生代的内存分为一块较大的Eden区域和两块较小的Survivor区域。每次使用Eden和其中一块Survivor空间。回收的时候,将Eden和
阅读全文
摘要:一、关于常量池 字符串在Java中用的非常得多,Jvm为了减少内存开销和提高性能,使用字符串常量池来进行优化。 在jdk1.7之前(不包括1.7),Java的常量池是在方法区的地方,方法区是一个运行时JVM管理的内存区域,是一个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态常量等。
阅读全文
摘要:在看HashMap源码的时候,涉及到红黑树,这个数据结构早已听闻大名,而且在学校的教材中没有讲这个数据结构,所以花了点时间去学习和理解这个数据结构。(比我想象中的复杂的多……) Red-Black Tree的简介 首先这是个二叉查找树,它属于但又不严格属于平衡二叉树(AVL),因为它没有像平衡二叉树
阅读全文
摘要:一、HashMap的原理 所谓Map,就是关联数组,存的是键值对——key&value。 实现一个简单的Map,你也许会直接用两个LIst,一个存key,一个存value。然后做查询或者get的时候,就遍历key的list,然后返回相应的value。 这样时间复杂度显然就是线性的,但这在map中已经
阅读全文
摘要:我的小记录 首先语法上,搞清除,Java有个Cloneable接口,但这个接口是没有定义方法的。 那实现了这个接口有什么用呢? 再看Object类中,有个clone()方法,这个方法提供一个浅复制的功能,如果你的类不实现Cloneable接口,然后你的类的instance调用clone()的话,就会
阅读全文
摘要:在阅读Thinking in Java的Containers in depth一章中的Holding references时,提到了一个工具包java.lang.ref,说这是个为Java垃圾回收提供了很大的灵活性的包。 并引出了抽象类Reference还有它的三个子类,书上看了好几次都一脸懵逼……
阅读全文
摘要:RTTI 是Runtime type information的缩写,可以让你在程序运行的时候,发现和使用类的类型信息。 在有了泛型的容器中拿元素出来,就是一个RTTI最基本的体现。因为需要把容器中存的Object对象,转换成你泛型写的那个对象,这个转换的检查是发生在运行时的,所以是RTTI。 (Sh
阅读全文
浙公网安备 33010602011771号