教程簡介 Java併發入門教程 - 從簡單的步驟瞭解Java併發,從基本到高級概念,包括概述,環境設置,主要操作,線程通信,同步,死鎖,ThreadLocal,ThreadLocalRandom,Lock,ReadWriteLock,Condition,AtomicInteger, AtomicLo ...
教程簡介
Java併發入門教程 - 從簡單的步驟瞭解Java併發,從基本到高級概念,包括概述,環境設置,主要操作,線程通信,同步,死鎖,ThreadLocal,ThreadLocalRandom,Lock,ReadWriteLock,Condition,AtomicInteger, AtomicLong,AtomicBoolean,AtomicReference,AtomicIntegerArray,AtomicLongArray,AtomicReferenceArray,Executor,ExecutorService,ScheduledExecutorService,newFixedThreadPool,newCachedThreadPool,newScheduledThreadPool,newSingleThreadExecutor,ThreadPoolExecutor,ScheduledThreadPoolExecutor,Futures and Callables,Fork-Join框架,BlockingQueue,ConcurrentMap,ConcurrentNavigableMap。
線程的優勢
1.充分利用多CPU的能力,提高系統吞吐量:在蒸煮(任務1)的過程中,同時可以炒菜(任務2)。當然你的煤氣竈是單竈就沒法了。。。即使在單CPU的機器上,多線程也可能提高程式的吞吐量,假如某個操作被阻塞(同步I/O操作),後續的邏輯不得不等待其完成。如果將其分開,放入不同的線程中,則在I/O上被阻塞的線程不會影響另一個線程被調度執行。比如你等燒水的時間可以刷朋友圈。 這樣做的前提是,程式首先是可以被分開,另一個線程的執行並不依賴I/O操作的結果。
2.簡化建模:你有三個任務要處理,改BUG,給老闆寫報告,關註股市行情等。當你正在絞盡腦汁地改bug,老闆忽然發消息讓你儘快交報告,還同時高頻觀察股價以便出手解套。有時候你要兼顧幾個任務,常常讓人倍感疲憊。程式也一樣,有很多task要處理,如何以優雅的方式進行是一個設計問題。JAVA允許將複雜應用分解為不同的任務,每個任務分配給獨立的線程運行。從而使編程邏輯清晰。很多框架如Servlet,RMI都是利用此模型開發,框架來管理請求,創建線程,平衡負載,分發(dispatch)請求給相應的業務處理組件。屏蔽了底層的細節,開發人員只需要關註業務邏輯。
3.提高用戶界面響應:用Eclipse IDE都知道,如果觸發一個長時間的任務(編譯工程,搜索文件,更新等),界面依然可以接受用戶的其他操作。對於長時間的任務,會放入單獨的線程裡面完成,從而不影響Event Thread處理用戶別的很快完成的請求。
4.非同步事件處理的簡單化: Java NIO提供了一種非阻塞IO機制,在超大量請求來時,可能會觸到多線程的性能瓶頸,通過NIO實現單線程內的非同步IO,從而減少線程的創建數量,並且不阻塞其他邏輯。但是NIO相對比較複雜也容易出錯。而通過簡單的多線程,同步IO已經可以滿足大部分需求。
教程目錄
- Java併發教程
- Java併發 - 概述
- Java併發 - 環境設置
- Java併發 - 主要操作
- 深入溝通
- Java併發 - 同步
- Java併發 - 死鎖
- Java併發 - ThreadLocal類
- ThreadLocalRandom類
- Java併發 - 鎖介面
- Java併發 - ReadWriteLock介面
- Java併發 - 條件介面
- Java併發 - AtomicInteger類
- Java併發 - AtomicLong類
- Java Concurrency - AtomicBoolean類
- Java併發 - AtomicReference類
- Java併發 - AtomicIntegerArray類
- Java Concurrency - AtomicLongArray類
- AtomicReferenceArray類
- Java併發 - Executor Interface
- ExecutorService介面
- ScheduledExecutorService介面
- newFixedThreadPool方法
- newCachedThreadPool方法
- newScheduledThreadPool方法
- newSingleThreadExecutor方法
- ThreadPoolExecutor類
- ScheduledThreadPoolExecutor類
- Java併發 - Futures和Callables
- Java Concurrency - Fork-Join框架
- Java併發 - BlockingQueue介面
- Java併發 - ConcurrentMap介面
- ConcurrentNavigableMap介面
- Java併發 - 有用的資源