多线程线程池的基本创建,使用方法
生活随笔
收集整理的這篇文章主要介紹了
多线程线程池的基本创建,使用方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
import java.util.concurrent.*;/*** 多線程線程池的基本創建,使用方法** @author silence*/
public class Silence {public static void main(String[] args) {//創建一個線程池 最大線程數量20 核心線程15//如果提交了超過15 不超過20的任務,會創建臨時線程。//臨時線程超過 60秒會被銷毀//如果提交任務數量,超過 最大線程數量+排隊數量, 會拋出異常ThreadPoolExecutor thread = new ThreadPoolExecutor(//核心線程5,//最大線程數量10,//等待時間60,//等待時間的單位(秒)TimeUnit.SECONDS,//阻塞隊列,排隊的數量new ArrayBlockingQueue<>(10),//默認線程工廠Executors.defaultThreadFactory(),//超出任務的拒絕策略new ThreadPoolExecutor.AbortPolicy());//提交十個線程任務,并讓他暫時阻塞在哪里for (int i = 0; i < 8; i++) {//判斷線程池有沒有提交滿while (true) {//正在執行的線程數量int activeCount = thread.getActiveCount();//最大線程數int maximumPoolSize = thread.getMaximumPoolSize();//如果線程池沒滿就提交//提交線程任務if (activeCount < maximumPoolSize) {thread.submit(() -> {System.out.println("線程提交");try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}});break;}}}//關閉線程池thread.shutdown();//線程池關閉后,已提交的線程任務。可以繼續執行,但不能提交新任務//可以在確定沒有線程任務提交之后關閉/* thread.submit(()->{System.out.println("55");});*///返回正在執行任務的線程的大概數量。int activeCount = thread.getActiveCount();System.out.println("返回正在執行任務的線程的大概數量:" + activeCount);//返回允許的最大線程數。
/* int maximumPoolSize = thread.getMaximumPoolSize();System.out.println("返回允許的最大線程數:" + maximumPoolSize);*///如果所有任務在關閉后完成,則返回 true 。/* boolean terminated = thread.isTerminated();System.out.println("如果所有任務在關閉后完成,則返回 true: " + terminated);*///BlockingQueue<Runnable> queue = thread.getQueue();System.out.println("隊列排隊的任務個數:" + queue.size());}
}
總結
以上是生活随笔為你收集整理的多线程线程池的基本创建,使用方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redmi K50i首曝光:屏幕变为LC
- 下一篇: 判断一个字符串大写小写,和数字出现的次数