04 2020 档案
单例模式
摘要:问题的由来: 为什么? 多个线程操作不同实例对象。多个线程要操作同一对象,要保证对象的唯一性 解决的问题: 实例化过程中只实例化一次 解决的思路 有一个实例化的过程(只有一次),产生实例化对象 new 提供返回实例对象的方法 getInstace() 单例模式的分类 饿汉式 饿汉就是类一旦加载,就把
阅读全文
Java内存模型
摘要:线程与JVM 1基本概念: 程序:代码,完成某一件任务,代码序列(静态的概念) 进程:程序在某些数据上的一次运行(动态的概念) 线程:一个进程可能包含一个或多个线程(占有资源的独立单元) 2 JVM与线程 JVM什么时候启动?类被调用 JVM线程 》其他的线程(main) 线程在JVM中 3 JVM
阅读全文
java-锁膨胀的过程
摘要:先来看个奇怪的demo public class A { int i=0; // boolean flag =false; public synchronized void parse(){ i++; JOLExample6.countDownLatch.countDown(); } } 睡眠5秒,
阅读全文
java对象头信息和三种锁的性能对比
摘要:java头的信息分析 首先为什么我要去研究java的对象头呢? 这里截取一张hotspot的源码当中的注释 这张图换成可读的表格如下 | | | Object Header (128 bits) | | | | Mark Word (64 bits) | Klass Word (64 bits) |
阅读全文
并发容器
摘要:ThreadLocal ThreadLocal 线程局部变量,只对当前线程范围有效,比如下面例子,在第一个线程设置的值,第二个线程是使用不了的。 public class TLDemo2 { private static ThreadLocal<User> threadLocal = new Thr
阅读全文
synchronized和volatile以及ReentrantLock
摘要:synchronized synchronized关键字锁定的是对象不是代码块,demo中锁的是object对象的实例 锁定的对象有两种:1.类的实例 2.类对象 加synchronized关键字之后不一定能实现线程安全,具体还要看锁定的对象是否唯一。 看个demo: private int cou
阅读全文
初识指令重排序,Java 中的锁
摘要:本文是作者原创,版权归作者所有.若要转载,请注明出处.本文只贴我觉得比较重要的源码 指令重排序 Java语言规范JVM线程内部维持顺序化语义,即只要程序的最终结果与它顺序化情况的结果相等,那么指令的执行顺序可以与代码逻辑顺序不一致,这个过程就叫做指令的重排序。 指令重排序的意义:使指令更加符合CPU
阅读全文
java的多线程是如何实现的?和操作系统有什么关系?
摘要:本文是作者原创,版权归作者所有.若要转载,请注明出处.本文只贴我觉得比较重要的源码,其他不重要非关键的就不贴了 本文操作系统是centos7 1.查看 pthread_create 函数显示及其示例 man pthread_create 2.cengos下安装man手册命令: yum install
阅读全文
Java源码分析: HashMap 1.8[转载]
摘要:HashMap 的实现在 JDK 1.7 和 JDK 1.8 差别较大 今天,我将对照 JDK 1.7的源码,在此基础上讲解 JDK 1.8 中 HashMap 的源码解析 请务必打开JDK 1.7对照看 2. 数据结构:引入了 红黑树2.1 主要介绍 2.2 存储流程注:为了让大家有个感性的认识,
阅读全文
Java源码分析: HashMap 1.7[转载]
摘要:前言HashMap 在 Java 和 Android 开发中非常常见今天,我将带来HashMap 的全部源码分析,希望你们会喜欢。本文基于版本 JDK 1.7,即 Java 7目录 1. 简介类定义 public class HashMap<K,V> extends AbstractMap<K,V>
阅读全文
Java位运算原理及使用讲解
摘要:1 java支持的位运算符: &:按位与。 |:按位或。 ~:按位非。 ^:按位异或。 <<:左位移运算符。 >>:右位移运算符。 <<<:无符号右移运算符。 位运 算 符 中 ,除 ~ 以 外 ,其余 均 为 二 元 运 算 符 。 操 作 数 只 能 为 整 型 和字 符 型 数 据 2.按位与
阅读全文