1.java.lang包
- 接口
- Runnable:提供一個無參的run(),其實例將由線程執行;
- Thread.UncaughtExceptionHandler(線程異常處理): -
- 當線程由於未捕獲的異常而終止時,將調用該接口;
- 如果線程沒有設置,將調用ThreadGroup;
- 如果ThreadGroup沒有處理,將調用默認的線程異常處理接口;
- 類
- Thread(線程):java程序中執行的線程;
- ThreadGroup(線程組):代表一組線程,繼承了UncaughtExceptionHandler;
- ThreadLocal(線程局部變量):詳解,每個線程都有自己獨立初始化的變量副本;
- InheritableThreadLocal(可繼承線程局部變量):詳解,擴展了ThreadLocal,子線程可繼承父線程的線程局部變量;
- Thread.State(線程狀態):枚舉類,表示線程的幾種狀態
- NEW 尚未啓動的線程
- RUNNABLE 執行的線程
- BLOCKED 被阻塞等待監視器鎖定
- WAITING 正在等待另一個線程執行
- TIMED_WAITING 正在等待另一個線程執行一定時間
- TERMINATED 已退出
2.java.util.concurrent包
線程池
CompletionService
- ExecutorService提交任務後,根據添加到線程池中的順序,依次獲取結果,獲取不到就阻塞
- CompletionService提交任務後,按任務完成的順序獲取結果,最先完成的任務最早獲取結果
- ExecutorCompletionService 使用Executor執行任務的CompletionService
Executor
- 執行已提交的 Runnable 任務的對象
- 提供將任務提交與每個任務將如何運行的機制(包括線程使用的細節、調度等)分離的方法
- 通常使用 Executor 而不是顯式地創建線程
- ExecutorService
- 可終止執行,並可獲取返回結果Future
- Executors提供創建ExecutorService及其子類對象的工廠方法,通常用此工廠方法創建ExecutorService對象
- ScheduledExecutorService
- 可在指定延遲後運行或定期執行的ExecutorService
- ScheduledThreadPoolExecutor ScheduledExecutorService的實現
- AbstractExecutorService ExecutorService法的默認抽象實現
- ForkJoinPool ExecutorService的實現,支持工作竊取算法
- ThreadPoolExecutor
- ExecutorService的實現,使用幾個池線程之一執行任務,通常使用Executors工廠方法配置
- ExecutorService
線程相關
Callable
- 類似於Runnable,由另一個線程執行的類設計的
- 可以返回結果,能拋出被檢查的異常
ForkJoinWorkerThread
- 由ForkJoinPool管理的線程,執行ForkJoinTask
Delayed
- 標識接口,標記應該在給定延遲時間之後執行的對象
CompletionStage
- 用於異步執行中的階段處理,只有CompletableFuture一個實現類
- 階段執行的計算可以表示爲功能,消費者或可運行(分別使用名稱包括apply , accept或run的方法),具體取決於是否需要參數和/或生成結果
- 示例:stage.thenApply(x -> square(x)).thenAccept(x -> System.out.print(x)).thenRun(() -> System.out.println())
Future
- 表示異步計算的結果,使用get方法返回的結果
- RunnableFuture
- 帶有run方法的Future,使用run方法計算的結果作爲Future的get方法返回的結果
- FutureTask 可取消的Future
- ScheduledFuture
- 延遲執行的Future
- RunnableScheduledFuture
- 延遲執行的RunnableFuture
- CompletableFuture
- 實現了Future和CompletionStage兩個接口,提供強大的Future的擴展功能
- 提供了函數式編程的能力,極大的簡化異步編程的複雜性
- 提供了異步執行中的階段處理,提供了轉換和組合功能
- ForkJoinTask
- 在ForkJoinPool內運行的任務的抽象基類,ForkJoinTask是一個輕量的線程實體
- 可被分解的異步任務, fork()分解子任務並異步執行,執行完成後join()連接結果
- 任務應避免使用synchronized方法或塊,並應儘可能減少其他阻塞同步
- 可分割的任務不應該執行阻塞I/O
- 不允許拋出IOExceptions之類的受檢查異常
- CountedCompleter
- 在任務完成時檢查是否有等待的任務,若沒有則觸發一個完成動作
- RecursiveAction 無返回結果的ForkJoinTask
- RecursiveTask 有返回結果的ForkJoinTask
- RunnableFuture
集合
BlockingQueue
- 線程安全的阻塞隊列,FIFO一端入隊列,一端出隊列,主要用於生產者-消費者隊列
- 繼承Collection接口,支持remove(x)操作,但效率不高
- 不接受null
- BlockingDeque
- 雙端阻塞隊列,兩端都可以進隊列,也可以出隊列(putFirst,takeFirst,putLast,takeLast)
- DelayQueue 無界阻塞隊列,在延遲期滿時才能從中提取元素
- LinkedBlockingDeque 基於鏈表的雙端阻塞隊列
- TransferQueue
- 生產者可使用方法transfer(E)傳送消息,並一直等待直到消費者調用take或poll接收消息
- LinkedTransferQueue 基於鏈表的無界TransferQueue
- ArrayBlockingQueue
- 由數組支持的有界阻塞隊列,列按FIFO(先進先出)原則對元素進行排序
- LinkedBlockingQueue 基於鏈表的無界阻塞隊列
- PriorityBlockingQueue 基於優先級的無界阻塞隊列
- SynchronousQueue
- 沒有任何內部容量,插入操作必須等待另一個線程的對應移除操作的阻塞隊列
- BlockingDeque
ConcurrentMap
- 線程安全的map集合
- ConcurrentNavigableMap 可返回其導航視圖的線程安全的map集合
- ConcurrentSkipListMap
- 可以根據鍵的自然順序進行排序,也可以根據創建時提供的Comparator進行排序
- ConcurrentSkipListMap
- ConcurrentHashMap
- 線程安全的HashMap,功能與Hashtable相同,但效率更高
- ConcurrentHashMap.KeySetView ConcurrentHashMap鍵的線程安全集合
- ConcurrentHashMap.ValuesView ConcurrentHashMap值的線程安全集合
- ConcurrentHashMap.EntrySetView ConcurrentHashMap鍵值對的線程安全集合
- ConcurrentNavigableMap 可返回其導航視圖的線程安全的map集合
其它Concurrent集合
- ConcurrentLinkedDeque 高效的無界雙端非阻塞隊列
- ConcurrentLinkedQueue 高效的無界線程安全非阻塞隊列
- ConcurrentSkipListSet
- 線程安全的Set,可以根據自然順序進行排序,也可以根據創建時提供的Comparator進行排序
其它線程安全的集合
- CopyOnWriteArrayList
- 線程安全的ArrayList,add/remove非消耗資源
- CopyOnWriteArraySet
- 線程安全的Set,內部使用CopyOnWriteArrayList實現,add/set/remove非消耗資源
工具和處理
TimeUnit
- 表示給定的粒度單位的持續時間,提供了跨單元轉換的實用方法
- 可表示執行定時和延遲操作
Executors
- 包含Executor、ExecutorService、ScheduledExecutorService、ThreadFactory和Callable類的工廠和實用方法
ForkJoinPool.ForkJoinWorkerThreadFactory
- 創建ForkJoinWorkerThread的工廠
ForkJoinPool.ManagedBlocker
- 擴展管理並行性的接口,用於在ForkJoinPool中運行的任務
ThreadFactory
- 創建一個新線程的線程工廠
- SimpleThreadFactory 創建新線程
- Executors.DefaultThreadFactory 創建指定分組和名稱的新線程
CompletableFuture.AsynchronousCompletionTask
- 標識接口,用於標識由async方法產生的async任務,用於監視,調試和跟蹤異步活動
- 全部實現類都是CompletableFuture內部類
RejectedExecutionHandler
- 無法由ThreadPoolExecutor執行的任務的處理程序
- 關閉Executor時可能發生execute不能接受任務,Executor便會調用此對象的rejectedExecution方法
- ThreadPoolExecutor.AbortPolicy 拋出一個RejectedExecutionException
- ThreadPoolExecutor.CallerRunsPolicy 直接在 execute方法的調用線程中運行被拒絕的任務
- ThreadPoolExecutor.DiscardOldestPolicy 丟棄最舊的未處理請求,然後重試execute
- ThreadPoolExecutor.DiscardPolicy 默默地丟棄被拒絕的任務
Exchanger
- 可以在對中對元素進行配對和交換的線程的同步點
CountDownLatch
- 同步輔助類,在完成一組正在其他線程中執行的操作之前,允許一個或多個線程一直等待
CyclicBarrier
- 一個同步輔助類,允許一組線程互相等待,直到到達某個公共屏障點(common barrier point)
Phaser
- 可重複使用的同步屏障,功能類似於CyclicBarrier和CountDownLatch,但支持更靈活的使用
Semaphore
- 計數信號量
ThreadLocalRandom
- 線程安全的隨機數生成器