原创 12、ReentrantLock中的公平鎖和非公平鎖的原理

ReentrantLock ReentrantLock內部是通過AQS實現鎖的功能,有公平鎖和非公平鎖兩種實現。 公平鎖,即鎖的獲取順序按線程申請鎖的先後順序。 非公平鎖,當一個線程t1申請鎖時,鎖剛好釋放。即使已有其他線程在t1之前申請

原创 九、多線程之Semaphore

流量控制 Semaphore Semaphore是一個計數的信號量。初始化時分配一個配額permits。在訪問前需要用acquire()方法申請一個配額,訪問結束後調用release()釋放配置。申請配額時如果配額不足將會阻塞。 例子:有

原创 監聽文件改變 fileAlterationMonitor

監聽文件改動 Apacha common.io2.0提供了監聽文件變化的功能。 功能由三個組件組成。 監聽器 FileAlterationListener 用於實現文件改變時觸發的行爲。 觀察者 FileAlterationObse

原创 八、多線程之CyclicBarrier

CyclicBarrier CyclicBarrier和CountDownLatch功能相似。CyclicBarrier是所有參與線程互相等待對方執行到某點,再一起執行後面程序。 與CountDownLatch一樣,CyclicBarri

原创 七、多線程之CountDownLatch

CountDownLatch 一個線程需要等到其他線程進行某操作時,可以使用CountDownLatch。 CountDownLatch構造方法,帶有一個int類型的參數。 public CountDownLatch(int count

原创 Log4j代碼形式配置

Log4j代碼形式配置   Logger:日誌記錄器,負責收集處理日誌記錄     (如何處理日誌) Appender:日誌輸出目的地,負責日誌的輸出  (輸出到什麼 地方) Layout:日誌格式化,負責對輸出的日誌格式化(以什麼形式展

原创 高性能集合框架——fastUtils

FastUtils簡介 fastutil通過提供特定類型的映射,集合,列表和優先級隊列來擴展Java™集合框架,並且佔用內存很少,並且可以快速訪問和插入; 還提供大(64位)數組,集和列表,以及用於二進制和文本文件的快速,實用的I / O

原创 六、多線程-CAS

CAS 鎖的開銷極大。在某些場景,如保證一個變量的 read-modify-write操作的原子性。這種場景可以通過使用CAS解決而不需要用到鎖。 CAS,Compare and swap 比較並交換,是一種樂觀鎖的實現方式。是一箇中由處

原创 二、多線程存在的問題

多線程存在的問題 多線程運用得好可以大大提高系統的性能。但是使用不當也會對系統造成毀滅性災難。 線程安全問題。多個線程操作共享數據時,會產生線程安全問題。導致讀取髒數據或者丟失更新等問題 線程活性問題。由於程序問題導致一個線程一直處於非R

原创 四、線程同步-volatile關鍵字

一旦一個共享變量(類的成員變量、類的靜態成員變量)被volatile修飾之後,那麼就具備了兩層語義: 保證了不同線程對這個變量進行操作時的可見性,即一個線程修改了某個變量的值,這新值對其他線程來說是立即可見的。 禁止進行指令重排序。

原创 三、java多線程同步-鎖

鎖概述 鎖是解決線程安全問題的最基本的解決方案。通過加鎖,使得會發生線程安全問題的代碼單線程串行。從而解決線程安全問題。 鎖的分類 公平鎖和非公平鎖 公平鎖是按照鎖申請的順序來分配鎖資源。 非公平鎖是允許插隊的,可能後申請的線程比先申請的

原创 java實現插入排序

package ogri1; import java.util.Arrays; public class InsertSort {public static void main(String[] args

原创 ThreadLocal的原理

ThreadLocal,很多地方叫做線程本地變量,也有些地方叫做線程本地存儲,其實意思差不多。可能很多朋友都知道ThreadLocal爲變量在每個線程中都創建了一個副本,那麼每個線程可以訪問自己內部的副本變量。Thread-1中只有一個T

原创 一、java多線程基礎

多線程的概念 進程是程序運行的實例。啓動一個java程序其實就是啓動了一個jvm的進程。進程是程序向操作系統申請資源(內存空間、文件句柄等)的基本單位。 線程是進程中可以獨立執行的最小單位。 進程和線程的關係,可以比喻成一個項目組和組員的

原创 五、多線程協作之等待喚醒機制

線程間協作 多線程開發中,線程往往都不是孤立的。一個線程往往需要多線程協作完成其待執行的任務。等待喚醒機制就是用來協調線程間的協作。例如:街邊的小吃店都是生產一份等銷售完再生產,這是典型的生產者消費者模式。下面用代碼實現這個場景。 等待喚