原创 1.2 多線程join的簡單使用示例

join的簡單使用示例,通過構造函數,把b線程放到a線程之後,然後在a線程中使用b.join,實現簡單的線程順序完成 public class UseJoin { public static void main(String[]

原创 1.11 等待通知機制wait和notify的使用,簡單的生產者消費者

能夠運行的代碼,簡單的生產者和消費者代碼 備註:我自己寫的時候,總是把在不同的對象上面調用,所以導致一直報錯,下面會有報錯代碼 1)通過synchronized獲取對象的鎖,一定要有synchronized同步中wait和notify 2

原创 3.3 引用類型的原子操作類AtomicReference使用示例

AtomicReference 主要是compareAndSet,將比較對象的地址、設置新增作爲CAS原子操作 public final boolean compareAndSet(V expect, V update) { r

原创 1.10 錯誤的使用ThreadLocal導致線程不安全

錯誤使用ThreadLocal導致線程不安全 public class ThreadLocalFault extends Thread{ private static User user = new User(0); T

原创 3、解決粘包和半包問題三種方式:自定義字符串分隔符、消息定長,系統回車符

注:源代碼來自享學課堂,學習之後所做筆記,方便回顧,也給大家一個參考 1、Client主函數 以下三種任意使用一種 1、通過添加DelimiterBasedFrameDecoder使用自定義字符串分隔符 2、消息定長,把消息的長度作爲固定

原创 2、netty粘包和半包實例代碼,此代碼會出現粘包示例,解決方法在下一篇

注:源代碼來自享學課堂,學習之後所做筆記,方便回顧,也給大家一個參考 1、Client主函數 import io.netty.bootstrap.Bootstrap; import io.netty.channel.ChannelFut

原创 intellij運行main函數的時候,設置堆內存大小

我在測試ThreadLocal內存泄露的時候,不曉得怎麼設置堆內存大小,特此記錄 第一步:打開Edit Configurations 第二步:給需要執行的對象設置VM options:-Xmx256m  --- 順便貼下jdk自帶的內

原创 2.1 CountDownLatch工具類的理解,使用

 CountDownLatch快速理解:線程需要等待其他線程做完一些事之後,才能夠繼續執行 圖解:線程a和b執行了await()方法,只有等到Thread1、thread2、thread3執行,知道countdown()讓cnt變爲0之後

原创 1.4 信號量Semaphore控制資源訪問數量工具的理解和示例

Semaphore:控制能夠同時訪問資源的線程數量; 使用:適合做流量控制,比如數據庫的鏈接 簡單使用示例 public class MySemaphore extends Thread { Semaphore semaphor

原创 1.8 ThreadLocal實現解析

實現解析 首先明確一點: 1、每個Thread線程下都有個ThreadLocal.ThreadLocalMap threadLocals = null;變量 2、ThreadLocalMap是ThreadLocal的一個內部類 3、Thr

原创 1.6 volatile最輕量的同步機制、使用示例和常見問題

在沒用同步的情況下共享變量 public class MyVolatite { private static boolean ready; private static int number; private

原创 3.2 AtomicIntegerArray 的簡單使用

 注:原始代碼來自享學課堂,自己理解消化略有修改 AtomicIntegerArray 主要是提供原子的方式更新數組裏的整型 其常用方法如下 •int addAndGet(int i,int delta):以原子方式將輸入值與數組中索引i

原创 1.5 synchronized類鎖和對象鎖快速區別

快速區別: 對象鎖: 1、public synchronized void test2() {} 2、 public void test3() { //this指的就是我們new出來的實例,比如a,b synchroni

原创 3.1 原子操作類AtomicInteger 的理解和使用

AtomicInteger 常用的幾個方法 int addAndGet(int delta):以原子方式將實例中的值與輸入的值delta相加,並返回結果 boolean compareAndSet(int expect, int upda

原创 3.4 引用類型的原子操作類AtomicStampedReference使用示例

AtomicStampedReference:解決CAS的ABA問題 AtomicInteger無法知道中間值有沒有被修改過,AtomicStampedReference通過整形final int stamp;來標記Integer值修改過