原创 AtomicInteger

AtomicInteger   AtomicInteger是java自帶的原子操作的類,調用unsafe的 public final int getAndAddInt(Object var1, long var2, int var4) ;

原创 AtomicLong和LongAdder的區別

前言   最近在看到不少框架裏面使用到了LongAdder這個類,而並非AtomicLong,很是困惑,於是專門看了LongAdder的源碼,總結一下這兩個的區別。 AtomicLong原理   就像我們所知道的那樣,AtomicLong

原创 Timer的scheduleAtFixedRate和schedule區別

Timer類   Timer類是進行任務調度的類,用來管理週期性任務的執行。 scheduleAtFxiedRate和schedule   在Timer類中有兩個方法用來提交週期性任務, public void schedule(Tim

原创 java守護線程

守護線程與非守護線程   JVM中存在兩種線程,用戶線程和守候線程。   所謂的守護線程,是指用戶線程在運行的時候後臺提供的一種通用服務的線程,比如用於垃圾回收的垃圾回收線程。   當一個線程由守護線程創建的時候它也是守護線程,當JV

原创 Log4j和Slf4j的關係

  Log4j是具體的實現,而Slf4j提供了一系列抽象接口,開發者一般用Slf4j提供的API進行開發,而Slf4j則調用Log4j進行日誌的寫入

原创 代碼中小知識點

  1.ArrayList.toArray(new T[size]);如果size大於ArrayList的大小的話,後面用null進行填充。

原创 ThreadLocal的使用與原理

1. 使用場景 使用單個線程保存上下文信息 可以使得本來線程不安全的類變得安全,例如DateFormat,如果每個線程只有一個DateFormat,那麼就是安全的 承載一些線程的信息,放在在方法調用的時候來回傳遞參數 2. 使用方法

原创 關於synchronized以及ReetrantLock、ReentrantReadWriteLock的選擇

synchronized和ReetrantLock的區別   synchronized是java的內置鎖,相對於ReetrantLock使用更加方便,如果實現自己的Lock,可以繼承ReetrantLock來實現,在性能上,兩個差異不是特

原创 java 多個線程之間錯誤處理

  java之間多個線程的錯誤是不會傳遞的,當個線程運行拋出錯誤,別的線程是無法感知到的。

原创 AtomicLongFieldUpdater VSAtomicLong

AtomicLong   AtomicLong是一個對象,因此我們創建的時候需要的內存大小(對象的大小+對象的引用); AtomicLongFieldUpdater   AtomicLongFieldUpdater需要的內存大小爲(引用的

原创 jar包下的MANIFEST.MF文件

MANIFEST.MF   當我們在打包成jar包的時候,默認會產生一個MANIFEST.MF,這個文件包含了基本的信息,包含該jar包的版本,創建人等信息,如果是可運行jar包,那麼就會有main-class屬性,用來指定main函數所

原创 java 中一個char包含幾個字節

背景   char包含幾個字節可能記得在上學的時候書上寫的是2個字節,一直沒有深究,今天我們來探究一下到底一個char多少個字節? Char   char在設計之初的時候被用來存儲字符,可是世界上有那麼多字符,如果有1個字節,那麼就意味着

原创 Void的使用場景

Void是什麼   Void是一個不可實例化的佔位符類用來保存引用代表了java裏面的關鍵字void的Class對象,那麼這個類的應用場景是什麼? Void的應用場景   應用場景有兩個: 任務返回值   在我們使用Future實現異

原创 Mysql的鎖

Mysql的鎖   在mysql中爲了支持併發,提供了兩種級別的鎖,行鎖和表鎖,行鎖併發性好但是加鎖需要的時間更久,表鎖併發性非常低但是加鎖快。在innodb存儲引擎中,行鎖鎖住的是索引,因此操作沒有索引的話,就會導致大量的表鎖,降低性能