- 博客(9)
- 资源 (45)
- 收藏
- 关注
原创 多线程并发下的单例模式
定义:单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。下面通过代码分析下java中,各种单例模式写法的优缺点。1、饿汉模式示例1.1public class Singleton { private Singleton() {} private static Object INSTANCE = new Object(); public
2017-06-26 14:55:36 1847
原创 深入分析JVM逃逸分析对性能的影响
逃逸分析(Escape Analysis)逃逸分析的基本行为就是分析对象动态作用域:当一个对象在方法中被定义后,它可能被外部方法所引用,称为方法逃逸。甚至还有可能被外部线程访问到,譬如赋值给类变量或可以在其他线程中访问的实例变量,称为线程逃逸。方法逃逸的几种方式如下:public class EscapeTest { public static Object obj; public
2017-06-26 14:53:44 5628 6
原创 深入理解 Synchronized
同步synchronized可以保证方法或者代码块在运行时,同一时刻只有一个方法可以进入到临界区,同时它还可以保证共享变量的内存可见性 Java中每一个对象都可以作为锁,这是synchronized实现同步的基础。synchronized 常见的三种用法如下: 普通同步方法,锁是当前实例对象 静态同步方法,锁是当前类的class对象 同步方法块,锁是括号里面的对象 通过
2017-06-26 15:04:53 1732
原创 Semaphore 源码分析
需要提前了解的知识点: AbstractQueuedSynchronizer 实现原理类介绍Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源。比如控制用户的访问量,同一时刻只允许1000个用户同时使用系统,如果超过1000个并发,则需要等待。使用场景比如模拟一个停车场停车信号,假设停车场只有两个车位,一开始两个车位都是空的。这时如果同时来
2017-06-26 15:02:20 1931
原创 CountDownLatch 源码分析
1. 类介绍一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。用给定的计数 初始化 CountDownLatch。由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞。之后,会释放所有等待的线程,await 的所有后续调用都将立即返回。这种现象只出现一次——计数无法被重置。2. 使用场景在一些应用场合中,需要等待某个条件
2017-06-26 15:01:22 1614
原创 AbstractQueuedSynchronizer 源码分析
概述Java的内置锁一直都是备受争议的,在JDK 1.6之前,synchronized这个重量级锁其性能一直都是较为低下,虽然在1.6后,进行大量的锁优化策略,但是与Lock相比synchronized还是存在一些缺陷的:虽然synchronized提供了便捷性的隐式获取锁释放锁机制(基于JVM机制),但是它却缺少了获取锁与释放锁的可操作性,可中断、超时获取锁,且它为独占式在高并发场景下性能大打折扣
2017-06-26 14:59:43 1860
原创 并发编程基础知识点
上下文切换CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个 任务。但是,在切换前会保存上一个任务的状态,以便下次切换回这个任务时,可以再加载这个任务的状态。所以任务从保存到再加载的过程就是一次上下文切换。这就像我们同时读两本书,当我们在读一本英文的技术书时,发现某个单词不认识,于是便打开中英文字典,但是在放下英文技术书之前,大脑必须先记住这本书读到了多少页的第多少行,
2017-06-26 14:58:15 1621
原创 JVM基于栈的解释器执行原理
继上一篇字节码分析finally块对return返回值的影响,好多人对局部变量表和操作数栈之间的关系搞不清楚,下面通过图解来描述局部变量表和操作数栈直接的关系。通过下面这段代码来解释JVM基于栈的执行原理4. public static int add(int a, int b) {5. int c = 0;6. c = a + b;7. return c;8. }查看字节码的命令:j
2017-06-26 14:51:53 2942
HTML5 世界地图 划分世界区域并显示国家名
2017-12-20
jdk源码share.rar
2017-09-07
openjdk8 源码 包括 jvm的实现
2017-09-07
JAVA网络编程 第4版.pdf
2017-09-07
MySQL必知必会(文字版).pdf
2017-09-07
Java数据结构和算法.(第二版).pdf
2017-09-07
Java RESTful Web Service实战.pdf
2017-09-07
MySQL性能调优与架构设计--全册.pdf
2017-09-07
mysql技术内幕InnoDB存储引擎.pdf
2017-09-07
深入java虚拟机 周志明
2017-09-07
javaFX 基础教程
2015-05-26
GB8567-2006计算机软件文档编制规范
2014-05-06
axis 实现 webservice 例子
2012-08-24
web 编译器
2011-12-06
JNI实例 Java调用DLL c++调用Java
2010-11-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人