
jdk
文章平均质量分 66
忧伤的比目鱼
这个作者很懒,什么都没留下…
展开
-
安装JDK9后eclipse无法启动问题
安装JDK9后eclipse无法启动问题原创 2017-10-07 00:35:05 · 731 阅读 · 0 评论 -
synchronized和Lock的区别
Lock以及它的一个实现类ReentrantLock是jdk5新增加的, Lock也可以用于实现多线程的同步区别synchronized既可以加在方法上,也可以加载特定代码块上,而lock需要显示地指定起始位置和终止位置;synchronized是托管给JVM执行(底层使用mutex lock实现),lock的锁定是通过代码实现的,它有比synchronized更精确的线程语义;sy...原创 2018-06-10 15:15:02 · 1493 阅读 · 0 评论 -
Synchronzied底层实现
synchronized的底层是使用操作系统的mutex lock实现;Mutex Lock监视器锁(Monitor)本质是依赖于底层操作系统的Mutex Lock(互斥锁)来实现的。每个对象都对应于一个可称为” 互斥锁” 的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象; 互斥锁:用于保护临界区,确保同一时间只有一个线程访问数据。对共享资源的访问,先对互斥量进行加锁,如...原创 2018-06-09 17:03:27 · 415 阅读 · 0 评论 -
Synchronzied锁对象之包装类
synchronized锁对象为包装类型(修饰变量)synchronized锁对象为包装类型时,需要考虑包装类型的缓存,如Integer默认缓存-127~128之间的数值,所以下例中锁a和锁b实际锁的是同一个对象;另外其它包装类也需要注意类似问题(如Byte/Short);public static Integer valueOf(int i) {if (i >= IntegerC...原创 2018-06-09 16:57:56 · 958 阅读 · 0 评论 -
动态代理之JDK动态代理&CGLib动态代理
JDK动态代理核心思想:通过实现被代理类的所有接口,生成一个字节码文件后构造一个代理对象,通过持有反射构造被代理类的一个实例,再通过invoke反射调用被代理类实例的方法,来实现代理。缺点:JDK动态代理的对象必须实现一个或多个接口 流程图知识点JDK实现动态代理需要实现类通过接口定义业务方法JDK生成的代理类以”$Proxy”为开头进行命名JDK代理生成的代理类的...原创 2018-04-26 22:58:24 · 642 阅读 · 0 评论 -
JDK之Float源码解析
概述Java的Float类主要的作用就是对基本类型float进行封装,提供了一些处理float类型的方法,比如float到String类型的转换方法或String类型到float类型的转换方法,当然也包含与其他类型之间的转换方法 java float类型用IEEE754标准规定;float占用4个字节,包括:1bit(符号位):0表示正数,1表示负数;8bits(指数位)...原创 2018-05-04 18:54:23 · 596 阅读 · 0 评论 -
java.lang.Integer源码分析
Integer 本文源码基于JDK8Integer也是我们经常使用的工具类、包装类,此文主要用于记录学习笔记,主要从源码角度深入了解一下。public final class Integer extends Number implements Comparable<Integer> { // 2147483647 public static fin...原创 2018-05-04 15:16:56 · 641 阅读 · 0 评论 -
JAVA线程池ThreadPoolExecutor学习笔记
ThreadPoolExecutorpublic ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, Tim...原创 2018-05-03 09:32:14 · 222 阅读 · 0 评论 -
JAVA单例模式总结
单例模式定义:确保某一个类只有一个实例,自行实例化并且想整个系统提供这个实例。使用场景:避免某个类产生多个对象而消耗过多的资源,确保某个类在程序中只有一个实例;单例模式的优点:对于频繁使用的对象,可以省略new操作花费的时间,这对于那些重量级对象而言,是非常可观的一笔系统开销;由于new操作的次数减少,因而对系统内存的使用频率也会降低,这将减轻GC的压力,缩短GC停顿时间; ...原创 2018-04-13 23:09:13 · 192 阅读 · 0 评论 -
volatile和synchronized比较
volatile和synchronized比较 synchronized关键字解决的是执行控制的问题,它会阻止其它线程获取当前对象的监控锁,这样就使得当前对象中被synchronized关键字保护的代码块无法被其它线程访问,也就无法并发执行。更重要的是,synchronized还会创建一个内存屏障,内存屏障指令保证了所有CPU操作结果都会直接刷到主存中,从而保证了操作的内存可见性,同时也使得先获...原创 2018-04-18 23:48:39 · 261 阅读 · 0 评论 -
JAVA线程安全之volatile
volatilevolatile原理是基于CPU内存屏障(Memory Barrier)指令实现的;如果一个变量被 volatile 关键字修饰时,那么对这的变量的写是将本地内存中的拷贝刷新到共享内存中;对这个变量的读会有一些不同,读是无视本地内存拷贝,只是从共享变量中去读取数据并拷贝到本地工作内存;volatile并不能真正保证线程安全,它只能确保一个线程修改了共享数据后,其他线程能...原创 2018-04-13 11:41:09 · 349 阅读 · 0 评论 -
JAVA之Unsafe学习笔记
sun.misc.Unsafe作用:可以用来在任意内存地址位置处读写数据,支持一些CAS原子操作 Java最初被设计为一种安全的受控环境。尽管如此,HotSpot还是包含了一个后门sun.misc.Unsafe,提供了一些可以直接操控内存和线程的底层操作。Unsafe被JDK广泛应用于java.nio和并发包等实现中,这个不安全的类提供了一个观察HotSpot JVM内部结构并且可以对其进行修改,原创 2018-04-12 18:33:39 · 4638 阅读 · 0 评论 -
JAVA——TreeSet学习笔记
TreeSetTreeSet是基于TreeMap的NavigableSet实现。使用元素的自然顺序对元素进行排序,或者根据创建set时提供的Comparator进行排序,具体取决于使用的构造方法。这句话什么意思呢?就是说,跟HashSet底层是一个HashMap来维护类似,TreeSet的底层实现就是一个TreeMap,自然也就具备了对元素排序的功能【知识点】TreeSet基于TreeMa...原创 2018-09-24 00:20:45 · 274 阅读 · 0 评论