原创 Java併發編程 併發安全 線程安全性 保證線程安全的幾種方法

什麼是線程安全性 在《Java 併發編程實戰》中,定義如下: 當多個線程訪問某個類時,不管運行時環境採用何種調度方式或者這些線程將如何交替執行,並且在調用代碼中不需要任何額外的同步或者協同,這個類都能表現出正確的行爲,那麼就稱這

原创 Java併發編程 線程安全下的單例模式

在域上運用延遲初始化佔位類模式 /** * 在域上運用延遲初始化佔位類模式 */ public class InstanceLazy { private Integer value; private Integer h

原创 Java併發編程 併發安全勁敵 線程死鎖 以及線程不安全引發的問題

文章目錄死鎖概念學術化的定義現象、危害和解決其他安全問題活鎖線程飢餓併發下的性能線程引入的開銷上下文切換內存同步阻塞如何減少鎖的競爭減少鎖的粒度縮小鎖的範圍避免多餘的鎖鎖分段替換獨佔鎖線程安全的單例模式雙重檢查鎖定解決之道懶漢式餓

原创 Java併發編程 ConcurrentLinkedQueue 無界非阻塞隊列 以及 寫時複製容器

ConcurrentLinkedQueue linkedList的併發版本,無界非阻塞隊列,它是一個基於鏈表的無界線程安全隊列。該隊列的元素 遵循先進先出的原則。頭是最先加入的,尾是最近加入的。插入元素是追加到 尾上。提取一個元

原创 線程運用---等待通知的範式wait()、notify()

1.等待線程獲取到對象的鎖,調用wait()方法,放棄鎖,進入等待隊列 2.通知線程獲取到對象的鎖,調用對象的notify()方法 3.等待線程接受到通知,從等待隊列移到同步隊列,進入阻塞狀態 4.通知線程釋放鎖後,等待線程獲取到鎖繼續

原创 JAVA對象引用的四種方式

引用 Objecto=newObject(); 這個 o,我們可以稱之爲對象引用,而 newObject()我們可以稱之爲在內存 中產生了一個對象實例。 當寫下 o=null 時,只是表示 o 不再指向堆中 object 的對象實例,不

原创 JAVA併發編程---線程基礎、線程之間的共享和操作

一、基礎概念   1.什麼是進程和線程 進程是操作系統進行資源分配的最小單位,一個進程下是可以擁有多個線程的 線程是CPU調度的最小單位,不能獨立於進程存在,可分享進程的資源 2.CPU核心數和線程數的關係 一般情況下——cpu核心

原创 Java虛擬機這一塊——JVM操作篇、JVM 性能優化

JVM操作篇、JVM 性能優化內存溢出(OOM)內存溢出的原因內存溢出的幾種方式棧溢出堆溢出直接內存方法區溢出內存泄漏長生命週期的對象持有短生命週期對象的引用連接未關閉變量作用域不合理內部類持有外部類Hash 值改變內存泄漏和內存

原创 一個簡單的客戶端工具類

這裏寫自定義目錄標題 /** * 客戶端工具類 * * @author dujiayu */ public class ServletUtils { /** * 獲取String參數 */

原创 Java虛擬機這一塊 —— JVM 調優和深入瞭解性能優化

JVM 調優和深入瞭解性能優化JVM 調優的本質GC 調優原則調優的原則目的GC 調優調優步驟日誌分析閱讀 GC 日誌-XX:+UseSerialGC-XX:+UseParNewGC-XX:+UseConcMarkSweepGC-