首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

《Thinking in Java》第二版學習筆記(四):多線程、網絡編程與設計模式

     編輯:Java 相關知識

第13章:創建窗口與程序片

本章內容較為基礎,主要介紹 Java AWT 與 Swing 的基本用法,此處略過詳細代碼示例,重點在於理解事件驅動模型與組件層次結構。

第14章:多線程核心機制

線程創建的兩種途徑

Java 提供兩種創建線程的方式:繼承 Thread 類或實現 Runnable 接口。繼承 Thread 最為直接,只需覆寫 run() 方法即可定義線程執行體。但實際啟動線程必須調用 start() 而非直接調用 run(),否則不會產生新的執行緒。

線程生命週期與四大狀態

  • 新建: 線程對象已創建,尚未調用 start()。
  • 可運行: 已調用 start(),等待 CPU 時間片,可能正在運行也可能在就緒隊列中。
  • 阻塞: 線程因 sleep()、wait()、I/O 操作、同步鎖等待而暫時無法運行。
  • 死亡: run() 方法正常返回或拋出未捕獲異常結束。不建議使用已棄用的 stop()、suspend()、destroy()。

共享資源與同步控制

多線程環境下,多個線程同時訪問有限資源(如銀行賬戶、打印機)會導致數據競爭。Java 通過 synchronized 關鍵字提供內置鎖機制:每個對象擁有一把鎖,synchronized 方法或代碼塊要求線程先獲取鎖才能執行,確保同一時刻只有一個線程訪問共享資源。此外,volatile 關鍵字可保證長整型與雙精度型變量的讀寫原子性,並禁止指令重排序優化。

線程協作:wait/notify 機制

wait() 釋放對象鎖並讓線程進入等待集,直到其他線程調用同一對象的 notify() 或 notifyAll() 喚醒。這組方法定義在 Object 中,必須在同步上下文中調用,否則拋出 IllegalMonitorStateException。管道流(PipedInputStream/OutputStream)也可實現線程間數據傳輸,適用於生產者-消費者模型。

第15章:網絡編程基礎

  • IP 地址: DNS 域名與點分十進制(如 202.98.32.111)兩種形式。
  • 端口: 識別進程內的具體應用,類比「房間號」。
  • Socket: 連接端點的軟件抽象,屏蔽底層硬件與協議細節,實現機器間虛擬「纜線」連接。

第16章:設計模式範式分類

依據《Design Patterns》一書,23 種模式按變化維度分為三類:

  1. 創建型: 封裝對象實例化細節(如 Factory、Singleton)。
  2. 結構型: 處理類/對象組合關係(如 Adapter、Proxy)。
  3. 行為型: 封裝算法與職責分配(如 Observer、Visitor、Iterator)。

本章重點示範 Observer(觀察者)與 Visitor(訪問者)模式的應用場景。

第17章:項目實戰與心得

歷經三個多月研讀,雖有收穫,但缺乏實戰演練。下一步應轉向實際項目開發,將理論轉化為代碼能力。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved