原创 Map旗下兩接口——SortedMap和NavigableMap

先看SortedMap,它直接繼承了Map: public interface SortedMap<K,V> extends Map<K,V> 顧名思義,此接口應該與排序有關,以下是它的一些方法: Comparator<? sup

原创 線程阻塞

廣義上的線程阻塞又可以細分爲阻塞和等待兩種: 阻塞指線程試圖獲取的對象鎖被其他線程持有導致線程被阻塞,此過程發生在synchronized代碼塊之外,是被動的。 等待指線程通過調用wait或sleep方法進入等待狀態,此過程發生在

原创 讀/寫鎖

如果有很多線程同時讀取數據而只有很少線程寫入數據,那麼允許讀者線程共享訪問,對性能有很大提升,在此情況下使用讀/寫鎖。讀鎖可以被多個讀操作共用,但排斥所有寫操作;寫鎖排斥所有其他的讀操作和寫操作。 private Reentran

原创 ThreadLocal

synchronized和ThreadLocal都是應用於線程共享變量時的方法,但它們對應的應用場景不同。我們可以這樣理解,多個線程共享同一個對象的變量,當多個線程需要維護的是同一個變量值時(即同一個時刻該變量一定只有唯一值是正確

原创 創建線程的三種方法

方法一:繼承Thread類 方法二:實現Runnable接口 方法三:實現Callable接口 前兩種方法需要重寫run方法,第三種方法需要重寫call方法。因爲Java不允許多繼承,允許實現多個接口,所以方法二比方法一靈活。

原创 守護線程

守護線程(daemon thread)只是用來爲其他線程提供服務,例如垃圾處理線程,當所有其他線程都終止只剩下守護線程時,虛擬機就退出了。不要讓守護線程去訪問固有資源,如文件、數據庫,因爲它可能在任何時候中斷,不安全。可以用set