java(并發(fā)編程)多線程入門到精通[張振華.jack]

java(并發(fā)編程)多線程入門到精通[張振華.jack]

ID:33592292

大小:877.67 KB

頁數(shù):37頁

時間:2019-02-27

java(并發(fā)編程)多線程入門到精通[張振華.jack]_第1頁
java(并發(fā)編程)多線程入門到精通[張振華.jack]_第2頁
java(并發(fā)編程)多線程入門到精通[張振華.jack]_第3頁
java(并發(fā)編程)多線程入門到精通[張振華.jack]_第4頁
java(并發(fā)編程)多線程入門到精通[張振華.jack]_第5頁
資源描述:

《java(并發(fā)編程)多線程入門到精通[張振華.jack]》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、自我介紹Java多線程從入門到精通------Java并發(fā)編程詳解張振華.JackQQ:494460705Mail:zhangzhenhua846@126.com2015年6月10年Java開發(fā)1張振華.Jack目錄I.JAVA-Thread概念I(lǐng)I.Thread的三種實現(xiàn)方法III.生命周期IV.安全和鎖V.Concurrent包(安全集合類、安全Queue)VI.線程阻塞機(jī)制VII.線程池詳解(原理,實際使用)VIII.線程的監(jiān)控,分析方法IX.擴(kuò)展數(shù)據(jù)庫連接池2張振華.Jack概念A(yù).什么是進(jìn)程A.是資源

2、分配的最小單位;(資源,包括各種表格、內(nèi)存空間、磁盤空間)B.同一進(jìn)程中的多條線程將共享該進(jìn)程中的全部系統(tǒng)資源B.什么是線程A.線程只由相關(guān)堆棧(系統(tǒng)?;蛴脩魲#┘拇嫫骱途€程控制表TCB組成。寄存器可被用來存儲線程內(nèi)的局部變量B.線程是CPU調(diào)度的最小單位C.什么是并行和并發(fā)A.并行運行:總線程數(shù)<=CPU數(shù)量*核心數(shù):B.并發(fā)運行:總線程數(shù)>CPU數(shù)量*核心數(shù):(時間片輪轉(zhuǎn)進(jìn)程調(diào)度算法)3張振華.JackThread的三種實現(xiàn)方法4張振華.Jack線程的生命周期/常用方法獲得當(dāng)前線程的副本:Threadcur

3、rent=Thread.currentThread();例如多線程上傳的文件的進(jìn)度條可以使用5張振華.Jack何為安全?什么是安全的?先問個問題?是不是不加鎖就不是線程安全的,個人感覺只要你代碼里面沒有變量互串,線程之間互不影響,例如server的設(shè)計方法;?非單例代碼也是安全的,注意只有單例模式下才會有鎖的問題6張振華.Jack鎖一.隱式鎖:synchronized(同一個對象鎖下面的,synchronized區(qū)域是互斥的)二.方法鎖(默認(rèn)是當(dāng)前對象的鎖)三.代碼快鎖(性能高于方法鎖,可以指定哪個對象的鎖)四

4、.顯示鎖:java.util.concurrent.lock(需要手動關(guān)/開),注意自己的代碼邏輯不要產(chǎn)生死鎖了五.關(guān)鍵字:volatile(線程在每次使用變量的時候,都會讀取變量修改后的最的值)六.其實是有風(fēng)險的,并行情況下不一定正確,有可能兩個線程同時取到最后修改的值七.原子操作:java.util.concurrent.atomic(AtomicBoolean,AtomicLong,AtomicInteger等一些類庫)八.(如果查看源碼的話,實現(xiàn)原理是volatile,相對安全的,個人覺得不絕對)7張振

5、華.Jack問一個問題,請看以下下面的鎖有用嗎8張振華.Jack?這種鎖是沒有用的啊,因為synchronized的對象不一樣9張振華.Jack常用的Concurrent線程安全類庫?java.util.concurrent.ConcurrentHashMap?java.util.concurrent.ConcurrentLinkedQueue?java.util.concurrent.ConcurrentMap?java.util.concurrent.ConcurrentNavigableMap?java.

6、util.concurrent.ConcurrentSkipListMap?java.util.concurrent.ConcurrentSkipListSet?實現(xiàn)原理和算法類似lock的10張振華.Jack安全線程阻塞隊列(1)java.util.concurrent.BlockingQueue?BlockingQueue很好的解決了多線程中高效安全“傳輸”數(shù)據(jù)的問題;?基于java.util.Queue的基礎(chǔ)上做了一些線程安全的封裝;(對以下方法做了一些的擴(kuò)展和封裝)11張振安全線程阻塞隊列(2)Bloc

7、kingQueue常用的兒子?1.ArrayBlockingQueue基于數(shù)組的阻塞隊列實現(xiàn),在ArrayBlockingQueue內(nèi)部,維護(hù)了一個定長數(shù)組,以便緩存隊列中的數(shù)據(jù)對象,這是一個常用的阻塞隊列,除了一個定長數(shù)組外,ArrayBlockingQueue內(nèi)部還保存著兩個整形變量,分別標(biāo)識著隊列的頭部和尾部在數(shù)組中的位置;?2.LinkedBlockingQueue基于鏈表的阻塞隊列,同ArrayListBlockingQueue類似,其內(nèi)部也維持著一個數(shù)據(jù)緩沖隊列(該隊列由一個鏈表構(gòu)成)?3.Dela

8、yQueueDelayQueue中的元素只有當(dāng)其指定的延遲時間到了,才能夠從隊列中獲取到該元素。DelayQueue是一個沒有大小限制的隊列,因此往隊列中插入數(shù)據(jù)的操作(生產(chǎn)者)永遠(yuǎn)不會被阻塞,而只有獲取數(shù)據(jù)的操作(消費者)才會被阻塞。使用場景:DelayQueue使用場景較少,但都相當(dāng)巧妙,常見的例子比如使用一個DelayQueue來管理一個超時未響應(yīng)的連接隊列。?4.Priorit

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。