Java中多線程的使用(超級超級詳細)線程池 7


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);
    }
}

運行結果

在這里插入圖片描述

以上就是線程池的一些基礎知識,如有錯誤還請批評指正,喜歡我的可以點贊收藏,我會不定期跟新文章,可以關注我呀
在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM