锁的总结

摘要: 乐观与悲观锁 悲观锁 总是假设最坏的情况,每次对数据操作都认为其它数据可能修改。在整个数据处理过程之中,将数据处于锁定状态。 乐观锁 假定不会发生并发冲突,只在提交操作时检测是否违反数据完整性。 公平锁与不公平锁 公平锁 指多个线程在等待同一个锁时,必须按照申请锁的先后顺序来依次获得锁。 不公平锁 阅读全文
posted @ 2020-03-27 15:39 我胡闹i你善后i 阅读(133) 评论(0) 推荐(0) 编辑

锁的应用

摘要: 用lock来保证原子性 什么是原子性,就是不可分,从头执行到尾,不能被其他线程同时执行。 可通过CAS来实现原子操作 CAS(Compare and Swap): CAS操作需要输入两个数值,一个旧值(期望操作前的值)和一个新值,在操作期间先比较下旧值有没有发生变化,如果没有发生变化,才交换成新值, 阅读全文
posted @ 2020-03-25 17:10 我胡闹i你善后i 阅读(124) 评论(0) 推荐(0) 编辑

Callable的Future模式

摘要: 继承Thread; 实现Runnable接口。 通过wait、notify、notifyAll并结合状态变量等来进行并发设计 调用callable实现示例 结果 Future概念 allAsList:对多个ListenableFuture的合并,返回一个当所有Future成功时返回多个Future返 阅读全文
posted @ 2020-03-23 18:01 我胡闹i你善后i 阅读(278) 评论(0) 推荐(0) 编辑

CyclicBarrier

摘要: CyclicBarrier CyclicBarrier默认的构造方法是CyclicBarrier(int parties),其参数表示屏障拦截的线程数量,每个线程使用await()方法告诉CyclicBarrier我已经到达了屏障,然后当前线程被阻塞。CyclicBarrier的另一个构造函数Cyc 阅读全文
posted @ 2020-03-19 23:55 我胡闹i你善后i 阅读(548) 评论(0) 推荐(0) 编辑

高并发和死锁

摘要: 互斥条件:一个资源每次只能被一个进程使用。 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 锁的类别有两种 1. 从数据库系统的角度来看:分为独占锁(即 阅读全文
posted @ 2020-03-18 21:17 我胡闹i你善后i 阅读(550) 评论(0) 推荐(0) 编辑

HashMap底层

摘要: 创建一个新的HashMap集合 /初始默认数组的大小static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16//最大容量static final int MAXIMUM_CAPACITY = 1 << 30;//默认的负载因子stat 阅读全文
posted @ 2020-03-17 18:21 我胡闹i你善后i 阅读(130) 评论(0) 推荐(0) 编辑

类加载

摘要: 类加载器 把实现类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作的代码模块称为“类加载器”。 将 class 文件二进制数据放入方法区内,然后在堆内(heap)创建一个 java.lang.Class 对象,Class 对象封装了类在方法区内的数据结构,并且向开发者提供了访 阅读全文
posted @ 2020-03-12 17:28 我胡闹i你善后i 阅读(141) 评论(0) 推荐(0) 编辑

字节码查看

摘要: 字节码是一种包含执行程序、由一序列 op 代码/数据对 组成的二进制文件。字节码是一种中间码,它比机器码更抽象,需要直译器转译后才能成为机器码的中间代码。 通常情况下它是已经经过编译,但与特定机器码无关。字节码通常不像源码一样可以让人阅读,而是编码后的数值常量、引用、指令等构成的序列。 字节码主要为 阅读全文
posted @ 2020-03-11 22:32 我胡闹i你善后i 阅读(414) 评论(0) 推荐(0) 编辑

垃圾收集器

摘要: 垃圾收集器依赖于具体的虚拟机实现。在本文中,我们采取的是 HotSpot,其内置了 7种类型的垃圾收集器实现。 Serial Serial,最基本最老的收集器。其存在的主要问题是"Stop The World",即在垃圾回收的时候,必须要暂停所有的其他工作线程,直到收集完成。此外在工作的时候,其垃圾 阅读全文
posted @ 2020-03-06 17:01 我胡闹i你善后i 阅读(143) 评论(0) 推荐(0) 编辑

通过jstack监控JVM当中线程的运行情况 jstack 进程ID

摘要: 1.使用jstat命令查看堆内存的使用情况 jstat 命令选项 vmid 间隔时间 查询次数 1.查看当前进程Class类加载的统计 jstat -class 14116 2.查看编译统计 jstat -compiler 14116 3.查看垃圾回收统计 jstat -gc 14116 S0C S 阅读全文
posted @ 2020-03-04 22:23 我胡闹i你善后i 阅读(386) 评论(0) 推荐(0) 编辑