原创 jdk1.8 LockSupport源碼解析

/* * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * *

原创 jdk1.8 ReentrantLock源碼解析

本文主要講了重入鎖的文檔說明,和核心代碼的理解。在閱讀之前需理解了AQS源碼。後面的公平鎖和非公平鎖的實現都是基於AQS的。 在ReentrantLock的內部類Sync繼承了AbstractQueuedSynchronizer,實現了t

原创 jdk1.8 AbstractQueuedSynchronizer源碼解析

/* * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * *

原创 HashMap 源碼淺析(jdk8 resize()詳細說明)

成員變量: /** * The default initial capacity - MUST be a power of two. * 默認的初始值大小,1*2的四次方也就是16. */ sta

原创 關於HttpClient中連接池是如何保持長鏈接的

根據Apache HttpClient 4.5.6講解。 HttpClient使用如下方式創建HttpClient時,在build()中會默認給HttpClient設置一個連接池PoolingHttpClientConnectionMan

原创 java死鎖的三個例子

例子1: 鎖順序引發的死鎖 private final Object left = new Object(); private final Object right = new Object(); public

原创 Executor(五):ForkJoinPool詳解 jdk1.8

首先聲明這個類在jdk11中有比較大的改動,如果使用的jdk11這篇文章可能對你幫助不大。 ForkJoinPool在1.7引入,它只被用來運行ForkJoinTask的子類任務。這個線程池和其他的線程池的不同之處在於它使用分而治之和工作

原创 Optional使用方式

Optional在jdk8中引入,已經有很長時間了,但是對於它的使用在平時的項目中最多隻是拿它做下面這樣的處理: XX e = Optional.ofNullable(xx.xx(x.x()))

原创 Executor(二):Future jdk1.8

如果使用異步計算就離不開Future,Future提供了一些方法方便對異步任務進行處理。  JDK對Future的描述 A Future represents the result of an asynchronous computa

原创 StampedLock 源碼解讀(jdk1.8)

  目錄 介紹 重入性:不可重入   調度策略 改造後的CLH結構 字段介紹 寫  讀 樂觀讀 鎖轉換  釋放鎖 StampedLock是jdk1.8中新加入的一個鎖。先看看它的介紹有一個大體的認識。 介紹 A capability-b

原创 Executor(三):ThreadPoolExecutor源碼解析 jdk1.8

目錄 ThreadPoolExecutor成員變量介紹 主要方法 內部運行原理  爲什麼要使用ThreadPoolExecutore,使用它能解決什麼問題? 在jdk文檔中給出了說明。 Thread pools address two

原创 二維數組按行讀取和按列讀取的效率問題

public static void main(String[] args) { int x = 5000;int y = 5000; int[][] array = new int[x][y];

原创 關於java float類型的比較

關於java的浮點類型處理,一般處理計算會想到使用BigDecemal,但是如果是比較呢? 可能會直接使用==,>等符號直接進行比較運算。可以執行下面的代碼查看結果:  public static void main(String[]

原创 Executor系列(一):Executor jdk1.8

目錄 介紹 主要方法 介紹 Executor接口是JDK1.5引入的。下面看看javadoc對它的描述。   An object that executes submitted Runnable tasks. This interfac

原创 windows下idea查看java編譯後的彙編代碼

第一步:下載hsdis 第二步:將hsdis-amd64.dll存放到..\jdk1.8.0_171\jre\bin\server目錄下               將hsdis-amd65.dll和hsdis-i386.dll存放到\j