原创 我所認識的鎖-總結

1、公平鎖:多個線程之間可以按照線程申請鎖的順序獲取鎖; 2、非公平鎖:多個線程之間獲取鎖的順序不一定按照申請鎖的順序獲得;Synchronized、ReentrantLock默認是非公平鎖,後者可以通過構造參數獲取公平鎖。 3、可重入鎖

原创 淺談CAS的實現

         用volatile可以保證共享變量的可見性,但是不能保證一次操作的原子性,因此在併發編程中,用Synchronized或者Lock或者CAS的方式都可以實現原子性操作;但是前面兩種方式都是在同一時間內只允許一個線程通過,

原创 JMM內存模型及Volatile的原子性Demo

關於Java內存模型自己的理解:         JVM運行程序的實體是線程,而每個線程在運行時都會爲其創建一個獨立的內存空間(Java棧,線程私有的),而成員變量是存儲在堆空間(線程共享的),JMM規定所有變量都存儲在主內存,所有線程都

原创 CAS引起的ABA問題以及解決

用AtomicInteger舉例說明: public class TestATomicABA { private static AtomicInteger atomicInteger = new AtomicInteger(0)

原创 CountDownLantch、CycliBarrier、semaphore的簡單使用

關於這三個工具類,個人的一點理解: CountDownLantch,一般應用於將多線程執行完之後再執行main線程,起到一個將上下文由異步轉化爲同步的效果; CycliBarrier,是將所有異步線程執行完之後,再由這其中的一個線程執行最

原创 List實現線程安全操作的解決辦法

1、Vector類,add方法使用Synchronized修飾 2、Collections.synchronizedList(List<T>() list),內部使用同步代碼塊的方式實現同步,用SynchronizedCollection

原创 ArrayList爲什麼線程不安全?怎麼進行擴容?

先來看一個線程不安全的樣例: public class TestArrayList { private static List<Integer> list = new ArrayList<>(); private sta

原创 數據庫連接池(簡易)

手寫一個數據庫連接池,代碼如下: 1、JDBC獲取鏈接 public class ConnectionResource { private static String url = "jdbc:mysql://localhost

原创 靜態代理

準備開始好好寫博客了,之前一直沒有注重這個,吃了不少虧;現在希望能記錄下來自己所學到的知識,加深理解,也希望可以幫到其他人,讓我們一起共創2020年的美好吧... 首先我們知道現在Java編程都是面向接口加實現類的方式,按照之前的寫法都是