1. 程式人生 > >2018第22周回顧

2018第22周回顧

普通 如同 常見 大文件 過程 .com clh鎖 enc 內存占用

原子屬性更新器AtomicReferenceFieldUpdater的使用,AtomicReferenceFieldUpdater是Java原子屬性更新器,它能讓普通對象的get、set操作變為原子操作,從而避免多線程環境下同步操作,提高程序運行效率。原子屬性更新器常用的方法是compareAndSet比較並設置屬性值,getAndSet返回當前屬性值並設置新值。

自旋鎖、排隊自旋鎖、MCS鎖、CLH鎖講了自旋鎖的幾種實現,最簡單的用AtomicReference<Thread>對象實現一個自旋鎖,用它的compareAndSet方法循環判斷當前對象是否持有鎖來實現加鎖、解鎖操作。但這種實現是非公平的,若要實現公平自旋鎖,可借用服務號、排隊號概念,用兩個AtomicInteger變量實現加鎖解鎖操作。為進一步提升性能,讓申請線程只在本地變量上自旋,又有人發明了MCS鎖和CLH鎖,它們都是基於AtomicReferenceFieldUpdater實現。

Java並發之synchronized講了Java同步關鍵詞的實現原理,以及優化過程,從Java6開始,默認開啟偏向鎖,當不同線程申請鎖導致偏向鎖失敗後升級為輕量級鎖,當在短時間有不同線程同時爭搶鎖導致輕量級鎖失敗後嘗試自旋操作,如果超出自旋次數則升級為重量級鎖。在對象頭中有對象鎖類型標誌。

HTTP基本知識回顧了它的基本原理,請求報文、響應報文的格式要求以及常見響應頭作用。

HTTP大文件上傳要考慮很多問題,比如同時支持上傳文件數、最大上傳文件大小,上傳文件服務器內存占用,多線程分片上傳,斷點續傳,文件檢驗失敗重傳等。

2018第22周回顧