原创 java併發和高併發之項目準備(三)

一、案例環境初始化:講述了通過https://start.spring.io  這個網頁,簡單創建一個spring boot框架,然後將其放在由碼雲代碼託管工具管理的一個項目中,由碼雲進行代碼管理,再通過idea打開項目進行後期創作的過程

原创 java併發和高併發之線程安全性——可見性

一、可見性: 1、定義:線程對主內存的修改可以及時地被其他線程觀察到; 2、導致共享變量在線程間不可見的可能性原因: 》線程交叉執行; 》重排序結合線程交叉執行; 》共享變量更新後的值沒有在工作內存與主存間及時刷新; 3、不同解決方案對可

原创 java併發編程和高併發之線程安全策略

一、不可變對象: 1、有一種對象,發佈時就是安全的,這個對象就是不可變對象。 2、如果想創建一個不可變的類,可參考使用最多的String類。當滿足以下三個條件時纔會是不可變對象。    即不可變對象需要滿足的條件:     》對象創建以後

原创 java併發基礎(二)

一、CPU多級緩存: 數據的讀取和存儲都經過高速緩存,CPU核心和高速緩存之間有一條快速通道,在上方簡化的圖中,主存和高速緩存都連接在系統總線上。 緩存容量遠遠小於主存, 一般二級緩存大於一級緩存容量,但速度比一級慢,三級緩存大於二級緩

原创 史上最傻java代碼記錄

1、記錄下最傻的一次代碼書寫:     因爲部分原因,今天竟然書寫了一段最傻的代碼:在get()方法中調用了set() 方法!       程序運行時,畫面直接崩潰! 打下錯誤日誌,只是見到在快速重複打出找到信息失敗的日誌,    裏面最

原创 學習SSM框架做仿照大衆點評的web項目所需考慮細節記錄

一、SSM(Spriing springMVC Mybatis)框架搭建常見web應用時所需注意的細節問題及相關思考: 1、項目設計中要注意其直接間接可能涉及的問題,思考邊緣性相關內容,思考可擴展性。比如在通用的網站項目中,廣告是個很重要

原创 java併發和高併發編程之線程不安全類與寫法

一、線程不安全類與寫法: 1、相對於不可變對象和線程封閉帶來的線程安全,什麼是線程不安全類呢?   如果一個類的對象同時可以被多個線程訪問,如果不做特殊的同步或者併發處理,那麼它就很容易表現出線程不安全的現象。比如,拋出異常、邏輯處理錯誤

原创 java併發編程和高併發——J.U.C之AQS首要概述

一、J.U.C之AQS介紹: 1、概述:J.U.C表示jdk中java.util.concurrente 包裏的內容,是從jdk6中引入的java併發包。J.U.C大大提高了java程序的併發性能。 而AQS被認爲是J.U.C的核心,指A

原创 java併發和高併發之線程安全性——有序性

一、有序性: 1、定義:java內存模型JMM中,允許編譯器和處理器對指令進行重排序,但是重排序過程不會影響到單線程程序的執行,卻會影響到多線程併發執行的正確性。 2、可以通過如下方案保證有序性: volatile  關鍵字:保證一定的有

原创 java併發和高併發之線程安全——同步容器

一、同步容器 1、同步容器出現原因:      因爲ArrayList  HashSet  HashMap 這幾個容器都是線程不安全的,但是使用頻率又最爲頻繁。所以在使用多線程併發地訪問這些容器時可能出現線程安全問題。因此要求開發人員在任

原创 java併發和高併發——J.U.C之AQS-CountDownLatch

一、 1、簡要介紹該類的使用原理圖: CountDownLatch是一個同步輔助類,利用它可以完成類似於阻塞當前線程的功能。換句話說,就是一個或者幾個線程一直等待,直到其它的線程運行完成。CountDown用了一個給定的計數器進行初始化

原创 java併發和高併發之 線程安全性——原子性-atomic-1

一、線程安全性 1、基本概念: 》定義:當多個線程訪問某個類時,不管運行時環境採用何種調度方式或者這些進行將如何交替執行,並且在主調代碼中不需要任何額外的同步或協同,這個類都能表現出正確的行爲,那麼就稱這個類是線程安全的。 2、線程安全性

原创 java併發和高併發之線程安全性—原子性 2—synchronized

一、原子性——鎖 1、原子性就是提供了互斥訪問,同一時刻只能有一個線程對它進行訪問或者說操作.java中,除了jdk中的atomic包之外,還有鎖。jjdk提供的鎖主要有兩種: 》synchronized 關鍵字: 依賴jvm. 在作用對

原创 java併發和高併發之線程池

一、         二、線程池使用:  

原创 java併發和高併發之線程封閉

一、線程封閉: 1、概述;線程安全策略,除了不可變對象,還有一個簡單的方法就是線程封閉。線程封閉其實就是把對象封裝到一個線程裏,只有這一個線程能看到這個對象,那麼這個對象本身就算不是線程安全的,也不會出現任何線程安全問題,因爲它只能出現在