Java中多線程的使用(超級超級詳細)線程池 7
什么是線程池?
線程池是一個容納多個線程的容器,線程池中的線程可以重復使用,無需反復創建線程而消耗過多的資源
*使用多線程的好處:
1.降低消耗,減少了創建和銷毀線程的次數,每個線程都可以重復利用,可執行多個任務
2.提高響應速度,任務可以不需要等到線程創建就可以立即執行
3.提高線程的可管理性,根據系統的承受能力,調整線程池中工作線程的數目,防止消耗過多的內存,導致服務器死機
線程池的使用
線程池的頂級接口是java.util.concurrent.Excetor,但是嚴格意義上來講,Excutor並不是一個線程池,而只是一個執行線程的工具,真正的線程池接口是java.util.concurrent.ExceutorService,要配置一個線程池是比較復雜的,而且配置的線程池很可能不是最優的,因此java.util.cocurrent.Exceutors線程工程里提供了一些靜態工廠,生成一些常用的線程池,官方建議使用Exceutors工程來創建線程池對象
創建線程池的方法
public static ExecutorService newFixedThreadPool(int nThreads) :返回線程池對象。(創建的是有界線 程池,也就是池中的線程個數可以指定最大數量)
獲取到了一個線程池ExecutorService 對象,那么怎么使用呢,在這里定義了一個使用線程池對象的方法如下: public Future<?> submit(Runnable task) :獲取線程池中的某一個線程對象,並執行
Future接口:用來記錄線程任務執行完畢后產生的結果。線程池創建與使用。
使用線程池中線程對象的步驟
1.創建線程池對象
2.創建Runable接口子類對象
3.提交Runable接口的子類對象
4.關閉線程池
下面使用一段代碼來操作一下下
package ThreadPool;
public class MyThread implements Runnable {
@Override
public void run() {
System.out.println("我要吃飯");
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("我吃飽了");
}
}
package ThreadPool;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Main {
public static void main(String[] args) {
//創建線程池對象
ExecutorService executorService = Executors.newFixedThreadPool(2);
//創建Runable實例對象
MyThread myThread = new MyThread();
executorService.submit(myThread);
executorService.submit(myThread);
executorService.submit(myThread);
}
}
運行結果
以上就是線程池的一些基礎知識,如有錯誤還請批評指正,喜歡我的可以點贊收藏,我會不定期跟新文章,可以關注我呀