Java源码
wespten
悦分享
网上搜索资料的朋友,一定都会有这样一个感受,那就是知识点有时太过零散,有时又存在误区,有时又太过简短,而有时又缺乏深度,一个系统又详细的分享小天地,为真正想去学习或了解某些事情的朋友,持续提供有价值且有深度的内容。
展开
-
深入学习java源码之ThreadLocal.get()()与ThreadLocal.initialValue()
深入学习java源码之ThreadLocal.get()()与 ThreadLocal.initialValue()并发编程ThreadLocal线程封闭机制强调局部的概念,就是在写代码的时候,尽量使用局部变量代替全局变量(这种叫做栈封闭),如果一定要使用全局变量,而又想让多个线程之间在访问共享变量的时候互不影响,那就使用ThreadLocal<T>。ThreadLocal&l...原创 2019-01-20 16:13:17 · 24035 阅读 · 5 评论 -
深入学习java源码之ByteBuffer.getDouble()与ByteBuffer.put()
深入学习java源码之ByteBuffer.getDouble()与ByteBuffer.put()hashCode方法及equals方法在Java中,hashCode 方法和 equals 方法都是 java.lang.Object 类的方法,简而言之,equals 是判断两个对象是否等价的方法,而 hashCode 则是为散列数据结构服务的计算散列值的方法。下面分别对这两个方法进...原创 2019-01-27 19:49:27 · 1458 阅读 · 0 评论 -
深入学习java源码之内存区域分配
深入学习java源码之内存区域分配一个类中可以产生多个对象,那么我们就要知道类中的构造函数到底是哪个对象所调用的,我们同时也要知道当前构造函数是给堆内存中哪个地址中的哪个对象的成员初始化值,所以在当前构造函数进入栈内存的时候,会在栈内存中的构造函数中生成一个隐式的this引用变量,来记录当前这个构造函数是被哪一个对象调用。Java内存分析栈、堆、常量池等虽同属Java内存分配时操作...原创 2019-01-27 23:35:14 · 299 阅读 · 0 评论 -
深入学习java源码之DelayQueue.poll()与DelayQueue.peek()
深入学习java源码之DelayQueue.poll()与DelayQueue.peek()DelayQueue是JDK1.5时,随着J.U.C包一起引入的一种阻塞队列,它实现了BlockingQueue接口,底层基于已有的PriorityBlockingQueue实现DelayQueue是阻塞队列中非常有用的一种队列,经常被用于缓存或定时任务等的设计,例如:a) 关闭空闲连接。服务器...原创 2019-02-01 18:46:37 · 3387 阅读 · 0 评论 -
深入学习java源码之Consumer.andThen()与Predicate.test()
深入学习java源码之Consumer.andThen()与Predicate.test()Consumer消费数据函数式接口这个方法是用来消费数据的,如何消费,消费规则自己定义.import java.util.function.Consumer;/** * 使用Consumer函数式接口实现格式化输出 */public class ConsumerDemo2 { ...原创 2019-02-02 07:54:15 · 7513 阅读 · 2 评论 -
深入学习java源码之Callable.call()与Future.get()
深入学习java源码之Callable.call()与Future.get()Callable和Future出现的原因创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。而自从Java ...原创 2019-02-03 08:07:50 · 11369 阅读 · 0 评论 -
深入学习java源码之CompletableFuture.reportGet()与CompletableFuture.supplyAsync()
深入学习java源码之CompletableFuture.reportGet()与CompletableFuture.supplyAsync()异步计算 所谓异步调用其实就是实现一个可无需等待被调用函数的返回值而让操作继续运行的方法。在 Java 语言中,简单的讲就是另启一个线程来完成调用中的部分计算,使调用继续运行或返回,而不需要等待计算结果。但调用者仍需要取线程的计算结果。 ...原创 2019-02-04 10:55:16 · 28169 阅读 · 0 评论 -
深入学习java源码之ForkJoinTask.doJoin()与ForkJoinPool.execute()
深入学习java源码之ForkJoinTask.doJoin()与ForkJoinPool.execute()ForkJoinTask:简单的说,ForkJoinTask将任务fork成足够小的任务,并发解决这些小任务,然后将这些小任务结果join。这种思想充分利用了CPU的多核系统,使得CPU的利用率得到大幅度提升,减少了任务执行时间。通常我们会利用ForkJoinTask的fork...原创 2019-02-04 14:26:42 · 2599 阅读 · 0 评论 -
深入学习java源码之Method.invoke()与 Method.getDefaultValue()
深入学习java源码之Method.invoke()与 Method.getDefaultValue()invoke方法用来在运行时动态地调用某个实例的方法。它的实现如下:@CallerSensitivepublic Object invoke(Object obj, Object... args) throws IllegalAccessException, IllegalA...原创 2019-01-27 19:13:16 · 1458 阅读 · 0 评论 -
深入学习java源码之ReentrantLock.newCondition()与ReentrantLock.lock()
深入学习java源码之ReentrantLock.newCondition()与ReentrantLock.lock()Java中通常实现锁有两种方式,一种是synchronized关键字,另一种是Lock。对于使用者的直观体验上Lock是比较复杂的,需要lock和realse,如果忘记释放锁就会产生死锁的问题,所以,通常需要在finally中进行锁的释放。但是synchronized的使...原创 2019-02-01 16:08:30 · 11668 阅读 · 0 评论 -
深入学习java源码之BlockingDeque.addFirst()与BlockingDeque.take()
深入学习java源码之BlockingDeque.addFirst()与BlockingDeque.take()ava集合类库将集合的接口与实现分离。同样的接口,可以有不同的实现。Java集合类的基本接口是Collection接口。而Collection接口必须继承java.lang.Iterable接口。以下图表示集合框架的接口,java.lang以及java.util两个包里的。其...原创 2019-02-01 07:21:27 · 1371 阅读 · 0 评论 -
深入学习java源码之Comparator.reverseOrder()与Comparator.compare ()
深入学习java源码之Comparator.reverseOrder()与Comparator.compare()Comparable接口此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 。实现此接口的对象列表(和数组)可以通过 Collections.sort (和 Arrays.sort )进行自动排序。实...原创 2019-01-26 19:17:52 · 13333 阅读 · 1 评论 -
深入学习java源码之AtomicInteger.get()与AtomicInteger.incrementAndGet()
深入学习java源码之AtomicInteger.get()与AtomicInteger.incrementAndGet()为什么需要AtomicInteger原子操作类?对于Java中的运算操作,例如自增或自减,若没有进行额外的同步操作,在多线程环境下就是线程不安全的。num++解析为num=num+1,明显,这个操作不具备原子性,多线程并发共享这个变量时必然会出现问题。pu...原创 2019-01-31 14:25:57 · 5918 阅读 · 0 评论 -
深入学习java源码之LinkedBlockingQueue.offer()与LinkedBlockingQueue.fullyLock()
深入学习java源码之LinkedBlockingQueue.offer()与LinkedBlockingQueue.fullyLock()Java集合类库将集合的接口与实现分离。同样的接口,可以有不同的实现。Java集合类的基本接口是Collection接口。而Collection接口必须继承java.lang.Iterable接口。以下图表示集合框架的接口,java.lang以及j...原创 2019-01-31 16:13:02 · 4004 阅读 · 0 评论 -
深入学习java源码之AbstractCollection.contains()与AbstractCollection.toArray()
深入学习java源码之AbstractCollection.contains()与AbstractCollection.toArray()Iterable接口与Iterator接口Iterator接口 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。 Java中的Iter...原创 2019-01-31 15:51:24 · 307 阅读 · 0 评论 -
深入学习java源码之Map转Object与json转Object
深入学习java源码之Map转Object与json转Objectorg.apache.commons.beanutils.PropertyUtils一般情况下,在Java中你可以通过get方法轻松获取beans中的属性值。但是,当你事先不知道beans的类型或者将要访问或修改的属性名时,该怎么办?Java语言中提供了一些像java.beans.Introspector这 样类,实现了在运...原创 2019-01-26 20:45:38 · 589 阅读 · 0 评论 -
深入学习java源码之Executors.newFixedThreadPool()与Executors.newCachedThreadPool()
深入学习java源码之Executors.newFixedThreadPool()与Executors.newCachedThreadPool()Executor框架是指java5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,CompletionService,Future,Callable等。他...原创 2019-02-02 16:12:36 · 30317 阅读 · 4 评论 -
深入学习java源码之Class.forName()与 Class.getDeclaredField()
深入学习java源码之Class.forName()与 Class.getDeclaredField()java反射什么是反射反射 (Reflection) 是 Java 的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性简而言之,通过反射,我们可以在运行时获得程序或程序集中每一个类型的成员和成员的信息。程序中一般的对象的类型都是在编译期就确...原创 2019-01-27 13:46:18 · 3690 阅读 · 1 评论 -
深入学习java源码之Introspector.getBeanInfo()与Introspector.getPropertyDescriptors()
深入学习java源码之Introspector.getBeanInfo()与Introspector.getPropertyDescriptors()内省1.什么是内省通过反射的方式操作JavaBean的属性,jdk提供了PropertyDescription类来操作访问JavaBean的属性,Beantils工具基于此来实现。2.内省怎么用1).操作一个属性Object obj ...原创 2019-01-27 23:22:51 · 9305 阅读 · 1 评论 -
深入学习java源码之ReadWriteLock.readLock()与ReadWriteLock.writeLock()
深入学习java源码之ReadWriteLock.readLock()与ReadWriteLock.writeLock()假设你的程序中涉及到对一些共享资源的读和写操作,且写操作没有读操作那么频繁。在没有写操作的时候,两个线程同时读一个资源没有任何问题,所以应该允许多个线程能在同时读取共享资源。但是如果有一个线程想去写这些共享资源,就不应该再有其它线程对该资源进行读或写(译者注:也就是说:读-...原创 2019-02-06 15:48:44 · 4016 阅读 · 0 评论 -
深入学习java源码之StringCoding.decode()与StringCoding.encode()
深入学习java源码之StringCoding.decode()与 StringCoding.encode()static关键字的用途static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。简而言之,一句话来描述就是: 方便在...原创 2019-01-30 11:38:59 · 4915 阅读 · 2 评论 -
深入学习java源码之ThreadGroup.setDaemon()与ThreadGroup.enumerate()
深入学习java源码之ThreadGroup.setDaemon()与ThreadGroup.enumerate()线程组ThreadGroup表示一组线程的集合,一旦一个线程归属到一个线程组之中后,就不能再更换其所在的线程组。那么为什么要使用线程组呢?个人认为有以下的好处:方便统一管理,线程组可以进行复制,快速定位到一个线程,统一进行异常设置等。ThreadGroup它其实并不属于Java并...原创 2019-01-30 15:25:35 · 669 阅读 · 0 评论 -
java的BigInteger和BigDecimal类源码详解
java的BigInteger和BigDecimal类源码详解如果基本的整数和浮点数精度不能满足需求,可以使用BigInteger和BigDecimal处理任意长度数字序列的数值,但缺点是速度比较慢。BigInteger实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点数运算。BigInteger类的定义public class BigInteger exte...原创 2019-09-03 08:48:41 · 1726 阅读 · 0 评论 -
java的数组与Arrays类源码详解
java的数组与Arrays类源码详解 java.util.Arrays 类是 JDK 提供的一个工具类,用来处理数组的各种方法,而且每个方法基本上都是静态方法,能直接通过类名Arrays调用。类的定义public finalclass Array { private Array() {} public static Object newInstance(Cl...原创 2019-09-03 10:32:09 · 2920 阅读 · 0 评论 -
java日期类Date与DateFormat源码详解
java日期类Date与DateFormat源码详解Date类的定义public class Date implements java.io.Serializable, Cloneable, Comparable<Date>{ private static final BaseCalendar gcal = ...原创 2019-09-03 14:28:35 · 1133 阅读 · 1 评论 -
java的DateFormat、SimpleDateFormate类源码的详解
java的DateFormat、SimpleDateFormate类源码的详解抽象类Format的定义public abstract class Format implements Serializable, Cloneable { private static final long serialVersionUID = -299282585814624189L; p...原创 2019-09-03 15:49:41 · 1134 阅读 · 0 评论 -
java的NumberFormat、DecimalFormat、MessageFormat类源码详解
java的NumberFormat、DecimalFormat、MessageFormat类源码详解NumberFormat类的定义public abstract class NumberFormat extends Format { protected NumberFormat() { } @Override public StringBuffer...原创 2019-09-03 17:29:37 · 734 阅读 · 0 评论 -
java的Calendar类源码与日期工具类
java的Calendar类源码与日期工具类Calendar类定义public abstract class Calendar implements Serializable, Cloneable, Comparable<Calendar> { public final static int ERA = 0; /** * Field number...原创 2019-09-03 17:58:57 · 1122 阅读 · 0 评论 -
java的List、ArrayList源码详解
java的List、ArrayList源码详解List类的定义public interface List<E> extends Collection<E> { // Query Operations int size(); boolean isEmpty(); boolean contains(Object o); I...原创 2019-09-04 09:28:03 · 478 阅读 · 0 评论 -
java的LinkedList源码详解
java的LinkedList源码详解类的定义public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable{ //链表元素(节点)的...原创 2019-09-04 14:24:56 · 263 阅读 · 0 评论 -
java的Integer类源码详解
java的Integer类源码详解类的定义public final class Integer extends Number implements Comparable<Integer> { @Native public static final int MIN_VALUE = 0x80000000; @Native public static fina...原创 2019-09-03 06:26:44 · 2569 阅读 · 0 评论 -
java的StringBuilder与StringBuffer类源码详解
java的StringBuilder与StringBuffer类源码详解类的定义abstract class AbstractStringBuilder implements Appendable, CharSequence { char[] value; int count; AbstractStringBuilder() { } Ab...原创 2019-09-02 19:30:21 · 616 阅读 · 0 评论 -
java的String类源码详解
java的String类源码详解类的定义public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. */ private final c...原创 2019-09-02 18:20:46 · 8204 阅读 · 2 评论 -
深入学习java源码之TimeUnit.sleep()与TimeUnit.timedWait()
深入学习java源码之TimeUnit.sleep()与TimeUnit.timedWait()TimeUnit是java.util.concurrent包下面的一个类,TimeUnit提供了可读性更好的线程暂停操作,通常用来替换Thread.sleep(),在很长一段时间里Thread的sleep()方法作为暂停线程的标准方式,几乎所有Java程序员都熟悉它,事实上sleep方法本身也很常用...原创 2019-01-30 15:50:33 · 1036 阅读 · 0 评论 -
深入学习java源码之Supplier.get()与Function.apply()
深入学习java源码之Supplier.get()与Function.apply()java函数式接口Java中的函数式编程体现就是Lambda,所以函数式接口就是可以适用于Lambda使用的接口。只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能顺利地进行推导。只要确保接口中有且仅有一个抽象方法即可:@FunctionalInterface注解与@Overri...原创 2019-02-01 04:00:04 · 5717 阅读 · 0 评论 -
深入学习java源码之Date.before()与Date.clone()
深入学习java源码之Date.before()与Date.clone()类 Date 表示特定的瞬间,精确到毫秒。在 JDK 1.1 之前,类 Date 有两个其他的函数。它允许把日期解释为年、月、日、小时、分钟和秒值。它也允许格式化和分析日期字符串。不过,这些函数的 API 不易于实现国际化。从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 Da...原创 2019-02-16 08:09:06 · 2507 阅读 · 0 评论 -
深入学习java源码之Object.writeObject()与Object.readObject()
深入学习java源码之Object.writeObject()与Object.readObject()对象的输出流: ObjectOutputStream对象的输入流: ObjectInputStreamjava.io.ObjectOutputStream是实现序列化的关键类,它可以将一个对象转换成二进制流,然后可以通过ObjectInputStream将二进制流还原成对象。主要的作...原创 2019-02-17 14:22:36 · 4808 阅读 · 0 评论 -
深入学习java源码之File类
File 类的常用方法 ①、创建方法 1.boolean createNewFile() 不存在返回true 存在返回false 2.boolean mkdir() 创建目录,如果上一级目录不存在,则会创建失败 3.boolean mkdirs() 创建多级目录,如果上一级目录不存在也会自动创建 ②、删除方法 1.boolean delete() 删...原创 2019-08-29 08:03:12 · 834 阅读 · 0 评论 -
Math类和StrictMath类源码详解
Math类和StrictMath类源码详解类的定义public final class Math {}public final class StrictMath {}被final修饰的类不能被继承,即它不能拥有自己的子类Math类会提供一些三角函数对比 public static double sin(double a) { retur...原创 2019-08-31 09:06:49 · 1146 阅读 · 1 评论 -
java枚举Enum与Enumeration源码详解
java枚举Enum与Enumeration源码详解类的定义public abstract class Enum<E extends Enum<E>> implements Comparable<E>, Serializable {}属性定义 private final String name; public...原创 2019-09-02 09:51:17 · 2301 阅读 · 0 评论