原创 JUC - CountDownLatch 源碼分析

簡介 CountDownLatch,一個同步輔助類,在完成一組正在其他線程中執行的操作之前,它允許一個或多個線程一直等待。 源碼分析 CountDownLatch的實現方式是在內部定義了一個實現AbstractQueuedSync

原创 JUC - ThreadPoolExecutor 源碼分析

簡介 ThreadPoolExecutor,Java線程池。使用線程池可以降低資源消耗,通過重複利用已創建的線程降低線程創建和銷燬造成的消耗;可以提高響應速度,當任務到達時,任務可以不需要的等到線程創建就能立即執行;可以提高線程的

原创 Linux 學習筆記

Linux系統分區大小分配: /      根分區 1000(嚴格限制大小) Swap  交換分區 大小爲內存兩倍(嚴格限制大小) /boot  啓動目錄 1500(嚴格限制大小) /home  存放用戶主目錄 4500(儘量大) /us

原创 JUC - ReentrantReadWriteLock 源碼分析

簡介 ReentrantReadWriteLock,讀寫鎖。維護了一對相關的鎖,一個用於只讀操作,另一個用於寫入操作。只要沒有 writer,讀取鎖可以由多個 reader 線程同時保持。寫入鎖是獨佔的。 與互斥鎖相比,讀-寫鎖允許對共享

原创 Java IO模型

目前常用的IO通信模型包括四種: 阻塞同步I/O(blocking IO) 非阻塞同步I/O(nonblocking IO) 多路複用I/O(IO multiplexing) 異步I/O(asynchronous IO) 這些IO模型

原创 JUC - Condition 源碼分析

簡介 Condition 將 Object 監視器方法(wait、notify 和 notifyAll)分解成截然不同的對象,以便通過將這些對象與任意 Lock 實現組合使用,爲每個對象提供多個等待 set(wait-set)。其中,Lo

原创 JUC - AbstractQueuedSynchronizer(AQS) 源碼分析

簡介 AbstractQueuedSynchronizer,同步器,以下簡稱AQS。本文從源碼分析AQS的核心方法和實現原理。 AQS內部有兩組重要的成員變量: int類型的status變量,通過CAS操作(詳見:CAS深度分析)改變s

原创 Java NIO Buffer詳解

Buffer緩衝區 緩衝區提供了對數據的結構化訪問,而且還可以跟蹤系統的讀/寫進程。所有的緩衝區都具有四個屬性來提供關於其所包含的數據元素的信息。它們是: 容量(Capacity) 緩衝區能夠容納的數據元素的最大數量。這一容量在緩衝

原创 Unsafe 源碼分析

轉載:http://www.cnblogs.com/mickole/articles/3757278.html sun.misc.Unsafe /** * This class should provide access to low-

原创 Java NIO Selector詳解

Selector選擇器 Selector(選擇器)是Java NIO中能夠檢測一到多個NIO通道,並能夠發現通道是否爲讀寫等事件做好準備的組件。這樣,一個單獨的線程可以管理多個channel,從而管理多個網絡連接。 Selector的實現

原创 Java NIO Channel詳解

Channel通道 在JAVA NIO中,基本上所有的IO都是從Channel開始的,讀取操作即從Channel讀到Buffer,寫操作即從Buffer寫入Channel。 在網絡IO方面,Channel的主要實現是DatagramCha

原创 blog遷移到: http://blogxin.cn/

blog地址: http://blogxin.cn/

原创 Java NIO 文件IO-內存映射文件MappedByteBuffer與zerocopy

在傳統的文件IO操作中,我們都是調用操作系統提供的底層標準IO系統調用函數read()、write() ,此時調用此函數的進程(在JAVA中即java進程)由當前的用戶態切換到內核態,然後OS的內核代碼負責將相應的文件數據讀取到內核的IO

原创 Java內存模型(JMM)核心概念總結

Java內存模型(JMM)核心概念 Java的採用的是共享內存模型,線程之間共享程序的公共狀態,線程之間通過寫-讀內存中的公共狀態來隱式進行通信。Java線程之間的通信由Java內存模型(JMM)控制,JMM決定一個線程對共享變量的寫入何

原创 JUC - FutureTask 源碼分析

簡介 FutureTask,可取消的異步計算。利用開始和取消計算的方法、查詢計算是否完成的方法和獲取計算結果的方法,此類提供了對 Future 的基本實現。僅在計算完成時才能獲取結果;如果計算尚未完成,則阻塞 get 方法。一旦計算完成,