Java多執行緒之進階篇
文章目錄
一、執行緒池
提到執行緒執行緒池我們先來說一下執行緒池的好處,執行緒池的有點大概可以概括三點:
- 重用執行緒池中的執行緒,避免因為執行緒的建立和銷燬所帶來的效能開銷。
- 能有效控制執行緒池的最大併發數,避免大量執行緒之間因互相搶奪系統資源而導致的阻塞現象。
- 能夠對執行緒進行簡單的管理,並提供定時執行以及指向間隔迴圈執行等功能。
1.1 快取執行緒池CachedThreadPool
長度無限制,執行流程為:
- 判斷執行緒池是否存在空閒執行緒
- 存在即使用
- 不存在,則建立執行緒,放入執行緒池,然後使用
程式碼塊如下
public class Executor {
public static void main(String[] args) throws InterruptedException {
ExecutorService service = Executors.newCachedThreadPool();
service.execute(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "鋤禾日當午");
}
});
service.execute(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "鋤禾日當午");
}
});
service.execute(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "鋤禾日當午");
}
});
Thread.sleep(1000);
service.execute(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"鋤禾日當午");
}
});
}
}
執行結果如下,可以看到第四個任務使用的是第一個執行緒
1.2 定長執行緒池FixedThreadPool
長度是指定的數值,執行流程為:
- 判斷執行緒池是否存在空閒執行緒
- 存在即使用
- 不存在空閒執行緒,且執行緒池未滿的情況下,則建立執行緒,放入執行緒池,然後使用
- 不存在空閒執行緒,且執行緒池已滿的情況下,則等待執行緒池存在空閒執行緒
程式碼塊如下
在這裡插入程式碼片
1.3 單執行緒執行緒池SingleThreadExecutor
效果與定長執行緒池建立時傳入數值1效果一致
程式碼塊如下
在這裡插入程式碼片
1.4 週期性任務定長執行緒池ScheduledThreadPool
它的核心執行緒數量時固定的,而非核心執行緒數是沒有限制的,並且當非核心執行緒閒置是會被立即回收。這類執行緒主要用於執行定時任務和具有固定週期的重複任務
相關文章
- 進階Java多執行緒Java執行緒
- Java進階05 多執行緒Java執行緒
- Java多執行緒(一)多執行緒入門篇Java執行緒
- Java多執行緒之執行緒中止Java執行緒
- Java執行緒池進階Java執行緒
- python進階(9)多執行緒Python執行緒
- 《Java 高階篇》七:執行緒和執行緒池Java執行緒
- Java多執行緒進階(二九)—— J.U.C之collections框架:ConcurrentLinkedQueueJava執行緒框架
- java進階(38)--執行緒安全Java執行緒
- Java多執行緒-基礎篇Java執行緒
- 【重學Java】多執行緒進階(執行緒池、原子性、併發工具類)Java執行緒
- Java多執行緒之FutureTaskJava執行緒
- Java多執行緒之CASJava執行緒
- java多執行緒之(synchronized)Java執行緒synchronized
- java多執行緒之執行緒的基本使用Java執行緒
- 多執行緒之ReentrantLock篇(五)執行緒ReentrantLock
- Java多執行緒詳解——一篇文章搞懂Java多執行緒Java執行緒
- Java多執行緒之守護執行緒實戰Java執行緒
- Java多執行緒之執行緒同步【synchronized、Lock、volatitle】Java執行緒synchronized
- 13Java進階——IO、執行緒Java執行緒
- java多執行緒之Thread類Java執行緒thread
- java多執行緒之volatile理解Java執行緒
- Java 高階 --- 多執行緒快速入門Java執行緒
- Java多執行緒-執行緒中止Java執行緒
- 多執行緒程式設計進階——Java類庫中的鎖執行緒程式設計Java
- 【Java多執行緒】輕鬆搞定Java多執行緒(二)Java執行緒
- Java多執行緒之synchronized理論Java執行緒synchronized
- Java多執行緒之Callable,Future,FutureTaskJava執行緒
- Java多執行緒之synchronized詳解Java執行緒synchronized
- java——多執行緒Java執行緒
- java多執行緒Java執行緒
- Java - 多執行緒Java執行緒
- java 多執行緒Java執行緒
- 最全java多執行緒總結2--如何進行執行緒同步Java執行緒
- Java多執行緒-執行緒狀態Java執行緒
- Java多執行緒-執行緒通訊Java執行緒
- java 多執行緒守護執行緒Java執行緒
- Java多執行緒(2)執行緒鎖Java執行緒