原创 多線程併發中CopyOnWriteArrayList源碼解讀

概述CopyOnWriteArrayList是jdk concurrent包中提供的一個非阻塞型的,線程安全的List實現。 CopyOnWriteArrayList在進行數據修改時,都不會對數據進行鎖定,每次修改時,先拷貝整個數組,然後

原创 深入java String.intern()

public String intern()  返回字符串對象的規範化表示形式。 一個初始時爲空的字符串池,它由類 String 私有地維護。 當調用 intern 方法時,如果池已經包含一個等於此 String 對象的字符串(該對象

原创 多線程併發中volatile變量的原理

引言 在多線程併發編程中synchronized和Volatile都扮演着重要的角色,Volatile是輕量級的synchronized ,它在多處理器開發中保證了共享變量的“可見性”。可見性的意思是當一個線程修改一個共享變量時,另外一

原创 多線程併發中ReentrantLock和ReentrantReadWriteLock的使用

package javautilconcurrent; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import

原创 多線程併發中CopyOnWriteArrayList的使用

除了加鎖外,其實還有一種方式可以防止併發修改異常,這就是將讀寫分離技術(不是數據庫上的)。 先回顧一下一個常識: 1、JAVA中“=”操作只是將引用和某個對象關聯,假如同時有一個線程將引用指向另外一個對象,一個線程獲取這個引用指向的對

原创 使用java.lang.Process類時需要注意的事情

package javautilconcurrent; import java.io.BufferedReader; import java.io.InputStreamReader; /**  * 使用Process需要注意的事情  *

原创 深入理解HashMap

1、hashmap的數據結構 要知道hashmap是什麼,首先要搞清楚它的數據結構,在java編程語言中,最基本的結構就是兩種,一個是數組,另外一個是模擬指針(引用),所有的數據結構都可以用這兩個基本結構來構造的,hashmap也不例外

原创 Java多線程(三)、線程同步

在之前,已經學習到了線程的創建和狀態控制,但是每個線程之間幾乎都沒有什麼太大的聯繫。可是有的時候,可能存在多個線程多同一個數據進行操作,這樣,可能就會引用各種奇怪的問題。現在就來學習多線程對數據訪問的控制吧。  由於同一進程的多個線程共

原创 1.深入java枚舉類型

枚舉類型是JDK5.0的新特徵。Sun引進了一個全新的關鍵字enum來定義一個枚舉類。 下面就是一個典型枚舉類型的定義: public enum Color{ RED,BLUE,YELLOW,GREEN; } 顯然,enum很像特殊的cl

原创 Java多線程(五)、多線程其他知識簡要介紹

一、線程組 [java] view plaincopyprint? /**  * A thread group represents a set of threads. In addition, a thread   * grou

原创 Java多線程(一)、多線程的基本概念和使用

一、進程和線程的基礎知識 1、進程和線程的概念 進程:運行中的應用程序稱爲進程,擁有系統資源(cpu、內存) 線程:進程中的一段代碼,一個進程中可以有多段代碼。本身不擁有資源(共享所在進程的資源) 在java中,程序入口被自動創建爲主線程

原创 4.深入java反射機制

定義 Reflection 是 Java 程序開發語言的特徵之一,它允許運行中的 Java 程序對自身進行檢查,或者說“自審”,並能直接操作程序的內部屬性和方法。 Java 的這一能力在實際應用中用得不是很多,但是在其它的程序設計語言中根

原创 Java多線程(四)、線程池

系統啓動一個新線程的成本是比較高的,因爲它涉及到與操作系統的交互。在這種情況下,使用線程池可以很好的提供性能,尤其是當程序中需要創建大量生存期很短暫的線程時,更應該考慮使用線程池。 與數據庫連接池類似的是,線程池在系統啓動時即創建大量空閒

原创 Mybatis3.2.6+mysql第一個例子

每當我們接觸到一個新的框架時,很多人會選擇把所有的文檔讀完,把別人的視頻看完(以前我也一樣),但是當你把所有的東西(文檔、視頻)都看完後來做第一個例子,發現你根本就無從下手,效率非常低下。我現在的做法是先到官網看搭建框架的五分鐘教程,把

原创 多線程和併發中BlockingQueue的使用

package javautilconcurrent; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue;