文章目錄
- 1. 多線程
- 1.1 創建線程的三種方式
- 多線程的創建方式一:繼承Thread類
- 多線程的創建方式二:實現Runnable接口
- 多線程的創建方式三:實現Callable接口
- 三種線程的創建方式對比
- Thread的常用方法
- 1.2 線程安全
- 線程同步
- 方式一:同步代碼塊
- 方式二:同步方法
- 方式三:lock鎖
- 1.3 線程池
- 什么是線程池
- 創建線程池
- 方式一:通過ThreadPoolExecutor創建線程池
- 1. 處理Runnable任務
- 2. 處理Callable任務
- 方式二:通過Executors創建線程池
- 1.4 并發、并行
- 2. 網絡編程
- 2.1 IP地址
- 2.2 端口
- 2.3 通信協議
- UDP協議
- TCP協議
- BS架構的原理
- 3. 幾個重要的類
- 3.1 時間相關的獲取方案
- 3.2 字符串的高效操作方案
- 3.3 BigDecimal
- 4. 單元測試
- 5. 反射
- 5.1 反射獲取Class對象
- 5.2 反射獲取類中的成分并操作
- 5.3 反射的基本作用
- 6. 注解
- 6.1 自定義注解
- 6.2 元注解
- 6.3 注解的解析(反射)
- 7. 動態代理
1. 多線程
線程(Thread)是一個程序內部的一條執行流程。
程序中如果只有一條執行流程,那這個程序就是單線程的程序。
1.1 創建線程的三種方式
多線程的創建方式一:繼承Thread類
多線程的創建方式二:實現Runnable接口
多線程的創建方式三:實現Callable接口
三種線程的創建方式對比
Thread的常用方法
1.2 線程安全
多個線程,同時操作同一個共享資源的時候,可能會出現業務安全問題。
線程同步
線程同步是線程安全問題的解決方案。
核心思想:讓多個線程先后依次訪問共享資源,這樣就可以避免出現線程安全問題。
常見方案:加鎖。即每次只允許一個線程加鎖,加鎖后才能進入訪問,訪問完畢后自動解鎖,然后其他線程才能再加鎖進來。
方式一:同步代碼塊
方式二:同步方法
方式三:lock鎖
1.3 線程池
什么是線程池
創建線程池
方式一:通過ThreadPoolExecutor創建線程池
ExecutorService的常用方法
線程池的注意事項
1. 處理Runnable任務
2. 處理Callable任務
方式二:通過Executors創建線程池
Executors使用可能存在的陷阱
1.4 并發、并行
2. 網絡編程
基本的通信架構
基本的通信架構有2種形式:CS架構( Client客戶端/Server服務端 )、BS架構(Browser瀏覽器/Server服務端)。
Java提供了哪些網絡編程解決方案?
java.net.*包下提供了網絡編程的解決方案。
網絡編程三要素:IP、端口、協議
2.1 IP地址
IP域名
DNS域名解析
公網IP、內網IP
InetAddress類
2.2 端口
用來標記標記正在計算機設備上運行的應用程序,被規定為一個 16 位的二進制,范圍是 0~65535。
2.3 通信協議
開放式網絡互聯標準:OSI網絡參考模型
傳輸層的2個通信協議
UDP協議
UDP通信的實現
TCP協議
TCP通信的實現
BS架構的原理
每次請求都開一個新線程,到底好不好?
高并發時,容易宕機!解決辦法:使用線程池優化。
3. 幾個重要的類
3.1 時間相關的獲取方案
3.2 字符串的高效操作方案
StringBuilder
3.3 BigDecimal
用于解決浮點型運算時,出現結果失真的問題。
BigDecimal的常見構造器、常用方法
4. 單元測試
單元測試就是針對最小的功能單元:方法,編寫測試代碼對其進行正確性測試。
Junit單元測試框架
可以用來對方法進行測試,它是第三方公司開源出來的(很多開發工具已經集成了Junit框架,比如IDEA)
Junit單元測試的使用步驟
5. 反射
反射就是:加載類,并允許以編程的方式解剖類中的各種成分(成員變量、方法、構造器等)。
5.1 反射獲取Class對象
5.2 反射獲取類中的成分并操作
5.3 反射的基本作用
6. 注解
6.1 自定義注解
注解的原理
注解的作用
6.2 元注解
指的是:注解注解的注解。
6.3 注解的解析(反射)
7. 動態代理
如何為Java對象創建一個代理對象?