博客 / 列表

g天命風流 - 併發編程之BlockingQueue(阻塞隊列)的詳細解析

BlockingQueue(阻塞隊列) ArrayBlockingQueue ArrayBlockingQueue用於解決多線程問題:生產者消費者案例 ArrayBlockingQueue對象在初始化的時候需要指定其容量。 對於這個隊列的操作,給出三種操作方法: 插入、移除、檢查 ArrayBlockingQueue對於這三種操作方法,給出了四套解決方案:

拋出異常 , i++ , JAVA , 前端開發 , Javascript

g天命風流 - 併發編程之CountDownLatch和CyclicBarrier的詳細解析(帶小案例)

CountDownLatch 倒計時鎖存器 用來解決線程執行次序的問題 CountDownLatch主要有兩個方法,當一個或多個線程調用await方法時,這些線程會阻塞。 其它線程調用countDown方法會將計數器減1(調用countDown方法的線程不會阻塞), 當計數器的值變為o時,因await方法阻塞的線程會被喚醒,繼續執行。 下面例子中,主線程‘

System , 子線程 , JAVA , 前端開發 , Javascript

g天命風流 - 併發編程之Callable方法的詳細解析(帶小案例)

Callable (第三種線程實現方式) Callable與Runnable的區別 Callable與Runnable的區別 實現方法名稱不一樣 有返回值 拋出了異常 class Thread1 implements Runnable{ @Override public void run() { } } class Thread2 imple

子類 , JAVA , 前端開發 , ide , Javascript

g天命風流 - 併發編程之的HashSet和HashMap的詳細解析

HashSet不安全 HashSet也是線程不安全的,底層沒有進行任何線程同步處理。 在hashset的源碼中,底層是用hashmap實現的: 每次add的時候,把值放在了map對象中的key,而map對象的value則全部統一放一個常量: 在下面的demo中,hashset在多線程情況下和arrayList一樣會拋出java.util.ConcurrentMo

System , i++ , JAVA , 前端開發 , Javascript

g天命風流 - 併發編程之的ArrayList安全性的詳細解析

ArrayList不安全 ArrayList中的add方法沒有synchronized修飾,是不安全的 下面代碼運行結果(異常 java.util.ConcurrentModificationException): import java.util.ArrayList; import java.util.List; import java.util.UUID;

項目代碼 , List , JAVA , 前端開發 , Javascript

g天命風流 - 併發編程之Java 對象頭的詳細解析

Java 對象頭 以 32 位虛擬機為例 普通對象 |--------------------------------------------------------------| | Object Header (64 bits) | |------------------------------------|-------------------------|

word , 項目代碼 , JAVA , 前端開發 , Javascript

g天命風流 - 併發編程之常見線程安全類以及一些示例的詳細解析

常見線程安全類 String Integer StringBuffer Random Vector Hashtable java.util.concurrent 包下的類 這裏説它們是線程安全的是指,多個線程調用它們同一個實例的某個方法時,是線程安全的。也可以理解為 Hashtable table = new Hashtable()

項目代碼 , 線程安全 , JAVA , 前端開發 , Javascript

g天命風流 - 併發編程之變量的線程安全分析的詳細解析

4.4 變量的線程安全分析 成員變量和靜態變量是否線程安全? 如果它們沒有共享,則線程安全 如果它們被共享了,根據它們的狀態是否能夠改變,又分兩種情況 如果只有讀操作,則線程安全 如果有讀寫操作,則這段代碼是臨界區,需要考慮線程安全 局部變量是否線程安全? 局部變量是線程安全的 但局部變量引用的對象則未必 如果該對象沒有逃離方法的作用訪問,它是

d3 , 線程安全 , JAVA , 前端開發 , Javascript