摘要:類大家都叫他讀寫鎖,他可以聽時刻允許多線程進入,讀寫鎖比排它鎖性能好,因為大多數情況讀多于寫。和區別同步屏障,用于多線程計算結果最后合并場景。
Java內存模型(jmm)
Why:保證多線程正確協同工作
看圖說明:
文字解釋:線程a和線程b通信過程,首先線程a把本地內存的共享變量更新到主內存中,然后線程b去讀取主內存的共享變量,最后更新到自己的本地內存中
JMM涉及的特性以及規則特性
1.原子性:操作不可中斷,即一個線程操作不會被另一個線程影響
特例:在32的操作系統中,long型不是原子性
2.可見性:是指一個線程修改某個共享變量的值,另一個線程能否立刻知道該共享變量的變化。
經常出現可見問性問題是因為重排序
重排序:編譯器和處理器為了提高執行效率,改變語句執行順序,為此jmm有happenbefore規則。
3.有序性: 代碼語句按順序執行
happenbefore規則
happenbefore規則是jmm的核心:作用保證前一個操作對后一個操作可見(同一個線程或者不同線程)
1.程序順序原則:一個線程內保證語義的串行性
2.Volatile規則:volatile的寫,先發生于讀,這保證了volatile的可見性
3.鎖規則:解鎖必然發生在隨后的加鎖前
4.傳遞性:a先于b,b先于c,那么a必然先于c
5.線程的start()方法先于他的每一個動作
6.線程所有操作先于線程的終結
7.線程的中斷先于被中斷線程的代碼
8.對象的構造函數執行、結束先于finalize()方法
原理:使用int成員變量表示同步狀態,通過內置fifo隊列完成資源獲取線程的排隊工作
他出名的兒子(繼承了aqs)
1.ReentrantLock(類):大家都叫他重入鎖,因為他可以重復加鎖,不過synchronized也有這功能。
2.ReentrantReadWriteLock(類):大家都叫他讀寫鎖,他可以聽時刻允許多線程進入,讀寫鎖比排它鎖(ReentrantLock)性能好,因為大多數情況讀多于寫。
3.CountDownLatch(類):大家叫他倒計時器,他允許一個或多個線程等待其他線程完成操作。
CyclicBarrier
1.同步屏障,用于多線程計算結果最后合并場景。
CountDownLatch
1.CountDownLatch的計數器只能使用一次,cyclicbarrier的計數器可以重置
類圖:如下
使用:
1.通過ThreadPoolExecutor創建線程池
參數解釋:
1.int corePoolSize :線程池基本大小
2.BlockingQueue :阻塞隊列,用來保存等待執行的任務
3.int maximumPoolSize :線程池最大數量,他與阻塞隊列關系是這樣4.審的,如果隊列滿了,線程池沒有滿,線程池會根據線程數量創執行任務。
4.long keepAliveTime :空閑線程存或時間
5.TimeUnit unit :線程活動保持時間的單位
提交
1.傳遞一個runnable(沒有返回值),需要返回值使用submit()方法。
threadPoolExecutor.execute(new Runnable() { @Override public void run() { } });公眾號
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72838.html
摘要:它是發布的用來處理的。入門第一篇郵件簡介及概述摘自入門第二篇創建郵件摘自入門第三篇發送郵件摘自入門第四篇接收郵件摘自入門第五篇解析郵件摘自第二講使用表示消息常用郵箱的地址及對應的端口 JavaMail,顧名思義,提供給開發者處理電子郵件相關的編程接口。它是Sun發布的用來處理email的API。它可以方便地執行一些常用的郵件傳輸。JavaMail API是Sun公司為方便Java開發人...
摘要:編程思想第版這本書要常讀,初學者可以快速概覽,中等程序員可以深入看看,老鳥還可以用之回顧的體系。以下視頻整理自慕課網工程師路徑相關免費課程。 我自己總結的Java學習的系統知識點以及面試問題,目前已經開源,會一直完善下去,歡迎建議和指導歡迎Star: https://github.com/Snailclimb/Java-Guide 筆者建議初學者學習Java的方式:看書+視頻+實踐(初...
摘要:中的多態引用的多態父類的引用是可以指向子類對象報錯方法多態動物具有吃的能力狗具有吃肉的能力狗具有看門的能力父類的引用是可以指向子類對象報錯 java中的多態 showImg(https://segmentfault.com/img/bVbnDYA?w=1138&h=612); showImg(https://segmentfault.com/img/bVbnD6B?w=344&h=17...
摘要:泛型增加不同于課程類型的數據往里增加字符串字符串泛型實現帶有泛型的類型屬性添加大學語文基礎循環遍歷泛型子類型紅色報錯解決辦法添加無參的構造方法泛型集合可以添加泛型的子類型的對象實例我是子類型的課程對象實例泛型不能使用基本類型基 泛型 showImg(https://segmentfault.com/img/bVbnR10?w=1085&h=559); showImg(https://s...
摘要:中的接口實例智能手機和都有玩游戲的功能代碼具有玩游玩的功能具有玩游玩的功能 java中的接口 showImg(https://segmentfault.com/img/bVbnEzV?w=1194&h=621); showImg(https://segmentfault.com/img/bVbnEzX?w=1192&h=615); showImg(https://segmentfaul...
閱讀 1295·2021-11-23 09:51
閱讀 3399·2021-09-06 15:00
閱讀 987·2021-08-16 10:57
閱讀 1371·2019-08-30 12:46
閱讀 933·2019-08-29 12:22
閱讀 1603·2019-08-29 11:07
閱讀 3147·2019-08-26 11:23
閱讀 2980·2019-08-23 15:14