原创 【Java併發】 - Phaser使用(轉)

原文鏈接 Overview Java 7的併發包中推出了Phaser,其功能跟CyclicBarrier和CountDownLatch有些重疊,但是提供了更靈活的用法,例如支持動態調整註冊任務的數量等。本文在Phaser自帶的示例代碼

原创 【Java併發】- ReentrantReadWriteLock,讀寫鎖原理

ReentrantReadWriteLock(讀寫鎖) 讀寫鎖概述 ReentrantReadWriteLock,讀寫鎖或者重入讀寫鎖,它維護了一個讀鎖和一個寫鎖,可以達到多個讀線程可以共享的獲取到鎖,而此時寫線程不能獲取到鎖,並

原创 【Java併發】- volatile詳解

在這之前需要先了解java內存模型 volatile特性 可見性。對一個volatile變量的讀,總能看到(任意線程)對這個volatile變量最後的寫入。 原子性。對任意一個volatile單個變量的讀/寫具有原子性。 但是類

原创 【Java併發】- ConcurrentHashMap原理解析(Segment版本)(轉)

ConcurrentHashMap原理解析 原文鏈接:http://www.iteye.com/topic/1103980 ConcurrentHashMap是一個線程安全的哈希表結構,它的主要功能是提供了一組和HashTable

原创 【Java併發】 - ThreadPoolExecutor詳解

概述 在編寫併發應用的時候通常都可以使用線程池,因爲比起我們自己手動的去創建新的線程並去開啓線程線程池能夠通過它自身對於線程的生命週期的管理來完成線程的複用這樣就減少了反覆創建線程的開銷降低了資源的消耗。 在Java中Executor接口

原创 centOS7下如何搭建memcached+mongodb+jdk+tomcat的基礎應用環境

centOS7下如何搭建memcached+mongodb+jdk+tomcat的基礎應用環境 本文主要介紹自己在centOS7下搭建服務環境的內容,略有簡陋,格式也未過多調整,如有遇到其餘問題,可私聊與我討論。 memca

原创 【Java併發】- StampedLock使用

StampedLock概述 StampedLock是從JDK1.8開始引入的,它的出現對於ReentrantReadWriteLock在讀多寫少的情況下的效率問題還有寫線程容易產生“飢餓”的問題有了很大的解決。ReentrantR

原创 【Java併發】- StampedLock實現淺析

StampedLock實現概述 StampedLock與之前的ReentrantLock,ReentrantReadWriteLock使用隊列同步列AQS實現有所不同,StampedLock的state改爲了一個long型的變量,

原创 Java還要再學一遍基礎(十四)實現斐波那契數列

費波那契數列(意大利語:Successione di Fibonacci),又譯爲費波拿契數、斐波那契數列、費氏數列、黃金分割數列。 指的是這樣一個數列:1、1、2、3、5、8、13、21、34、……在數學上,斐波納契數列以如下被以遞歸

原创 以普通用戶啓動的Vim如何保存需要root權限的文件(轉)

原文鏈接 在Linux上工作的朋友很可能遇到過這樣一種情況,當你用Vim編輯完一個文件時,運行:wq保存退出,突然蹦出一個錯誤: E45: 'readonly' option is set (add ! to override) 這表

原创 【Java併發】- AbstractQueuedSynchronizer詳解(AQS)

AQS簡介 AQS(隊列同步器),是用於構建鎖或者同步組件的基礎框架,通過使用一個int型的state變量來表示資源(或者同步狀態),同時使用內部的一個FIFO隊列來實現多個線程獲取資源的排隊,在構建相應的鎖或者同步組件的時候一般

原创 【Java設計模式】- 迭代器模式

概述 迭代器模式它可以讓用戶通過一個迭代器的接口去迭代訪問容器中的每一個元素而不用去關心容器內部數據的具體數據結構及實現。 優點:符合面向對象原則,將迭代的功能交給單一的迭代器去完成,同時使得容器可以擁有不同的迭代方式。 缺點:增加了系

原创 【Java併發】 - Semaphore

概述 Semaphore(信號量),通常用於限制某些資源的訪問線程數量。通過調用aquire方法獲取許可,沒有獲取到許可則阻塞當前線程直到獲取到許可爲止。操作完成後通過調用release方法來釋放許可,從而允許其他線程去獲取許可。同時Se

原创 【Java併發】- ReentrantLock,重入鎖

ReentrantLock概述 ReentrantLock(重入鎖),顧名思義是可以重新進入的鎖,也就是說當一個線程獲取了這個鎖之後還能在釋放鎖之前再次獲取這個鎖,同時還支持公平所和非公平鎖的選擇。 ReentrantLock的

原创 Java還要再學一遍基礎(十三)foreach循環

foreach的使用 List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); list.add(4); for(int v