(一)下載安裝 ① 地址 https://www.cursor.com/cn[https://www.cursor.com/cn] ② 下載 ③ 安裝 過程持續(xù)時間長!1,默...
之前說的AQS,其實AQS的設(shè)計很難達到的高度,開發(fā)中常用的工具想出來,知道大家有這個需求,開發(fā)人員需求可以通過這種方式降低代碼量,軟件開發(fā)思維很重要,抽象的模板方法,模板方...
上節(jié)說了ConcurrentHashMap,之前的知識會映射到今天的內(nèi)容點上面,學(xué)了這些方法到底怎么用,更多List,Set,Queue要去看源碼的時候,掌握現(xiàn)有知識點,源碼...
這次說說多線程只是擴展,主要講解一些應(yīng)用,應(yīng)用帶一些原理講解,同時希望各位老鐵有所收獲,這些內(nèi)容跟前面的線程和并發(fā)容器有關(guān)系的,從應(yīng)用場景引出多線程技術(shù)棧里面的應(yīng)用,其實鎖和...
上文說了HashMap,其實HashMap是線程非安全的,JDK里面有個線程安全的就是HashTable,查看HashTable每個方法都增加了synchronized同步鎖...
今天一起說說并發(fā)容器類,實際上還是JDK代碼里面的東西,其實不管是Map或者ConcurrentMap,網(wǎng)上太多的資料了,其實有些資料也是從網(wǎng)上找的,但是加入了自己的理解,更...
上次主要說的就是鎖,鎖的應(yīng)用,梳理了鎖的原理,其實你會發(fā)現(xiàn),沒有太多技巧性的內(nèi)容點,這個不容易看明白,先明白原理在看代碼。這個更方便理解。學(xué)習(xí)的過程就是:采坑,入坑,回頭看看...
上節(jié)講了線程安全和原子性,其實就是并發(fā)代碼變成同步,意味這代碼只有一個人在使用,這樣就不會有問題。 (一)Java中的鎖 1.自旋鎖 為了不放棄CPU執(zhí)行時間,循環(huán)的使用CA...
上次主要說了一個結(jié)論就是volatile,線程安全可見性的問題,大部分情況下可見性都不需要管理的,但是多線程編程的代碼中,我們會使用到volatile關(guān)鍵字,通過volati...
上次線程池已經(jīng)說過了,從今天開始一起了解下JVM內(nèi)存模型詳解。 (一)容易誤解的部分 老鐵很容易把JAVA的內(nèi)存區(qū)域、JAVA的內(nèi)存模型,GC分代回收的老年代和新生代也容易搞...
上節(jié)說了線程的閉包,通過局部變量或者是ThreadLocal的方式,完成了閉包了操作,這次一起說說線程的線程池原理。 (一)為什么要用線程池 ① 線程是不是越多越好 1.不一...
上次說了Java通信的幾種方式,suspend / resume,wait/notify,park/unpark,這次說說線程封閉。 (一)線程封閉概念 ① 引言 多線程訪問...
上節(jié)說了CPU緩存和內(nèi)存屏障,CPU廠家考慮到指令重排的一些解決方案吧,本次說說線程通信,多個線程運行期間,它們之間進行數(shù)據(jù)交互和協(xié)作。 (一)通信的方式 ①介紹 多要實現(xiàn)多...
上節(jié)說了線程中止,優(yōu)雅和暴力的方式,也說到了通過標(biāo)志位的方式,這次一起說說CPU緩存和內(nèi)存屏障。 (一)CPU性能優(yōu)化手段 ① 緩存 為了提高程序運行的性能,CPU已經(jīng)i7 ...
上次說了線程的6種狀態(tài),這次說說如何中止一個正在運行的線程。 (一)不正確的線程終止 - Stop ① stop 中止線程,并且清楚監(jiān)控鎖的信息,但是可能導(dǎo)致線程安全問題,J...
上次進行了JAVA程序運行的原理分析,通過【JVM指令代碼表】可以一步步,了解棧本地變量表和操作數(shù)棧,在棧線程中程序是如何運行的,這次咱們一起梳理下JAVA的線程狀態(tài)。 (一...
作為JAVA的開發(fā)人員,需要知道JAVA是如何運行的,這個需要好好思考下。 (一)class文件內(nèi)容 class文件包含JAVA程序執(zhí)行的字節(jié)碼,也就是說程序的執(zhí)行是通過cl...