成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

實現(xiàn)線程池的代碼

miya / 1847人閱讀

摘要:以下拋異常,因為線程池都沒了線程池之后提供的線程池的工廠類用來生成線程池類中的靜態(tài)方法創(chuàng)建一個可重用固定線程數(shù)的線程池參數(shù)創(chuàng)建線程池中包含的線程數(shù)量返回值接口返回的是接口的實現(xiàn)類對象我們可以使用接口接收面向接口編程線程池接口用來從線程池中獲


以下拋異常,因為線程池都沒了


package com.itheima.demo02.ThreadPool;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/*

線程池:JDK1.5之后提供的
java.util.concurrent.Executors:線程池的工廠類,用來生成線程池
Executors類中的靜態(tài)方法:
    static ExecutorService newFixedThreadPool(int nThreads) 創(chuàng)建一個可重用固定線程數(shù)的線程池
    參數(shù):
        int nThreads:創(chuàng)建線程池中包含的線程數(shù)量
    返回值:
        ExecutorService接口,返回的是ExecutorService接口的實現(xiàn)類對象,我們可以使用ExecutorService接口接收(面向接口編程)
java.util.concurrent.ExecutorService:線程池接口
    用來從線程池中獲取線程,調(diào)用start方法,執(zhí)行線程任務(wù)
        submit(Runnable task) 提交一個 Runnable 任務(wù)用于執(zhí)行
    關(guān)閉/銷毀線程池的方法
        void shutdown()
線程池的使用步驟:
    1.使用線程池的工廠類Executors里邊提供的靜態(tài)方法newFixedThreadPool生產(chǎn)一個指定線程數(shù)量的線程池
    2.創(chuàng)建一個類,實現(xiàn)Runnable接口,重寫run方法,設(shè)置線程任務(wù)
    3.調(diào)用ExecutorService中的方法submit,傳遞線程任務(wù)(實現(xiàn)類),開啟線程,執(zhí)行run方法
    4.調(diào)用ExecutorService中的方法shutdown銷毀線程池(不建議執(zhí)行)

*/
public class Demo01ThreadPool {

public static void main(String[] args) {
    //1.使用線程池的工廠類Executors里邊提供的靜態(tài)方法newFixedThreadPool生產(chǎn)一個指定線程數(shù)量的線程池
    ExecutorService es = Executors.newFixedThreadPool(2);
    //3.調(diào)用ExecutorService中的方法submit,傳遞線程任務(wù)(實現(xiàn)類),開啟線程,執(zhí)行run方法
    es.submit(new RunnableImpl());//pool-1-thread-1創(chuàng)建了一個新的線程執(zhí)行
    //線程池會一直開啟,使用完了線程,會自動把線程歸還給線程池,線程可以繼續(xù)使用
    es.submit(new RunnableImpl());//pool-1-thread-1創(chuàng)建了一個新的線程執(zhí)行
    es.submit(new RunnableImpl());//pool-1-thread-2創(chuàng)建了一個新的線程執(zhí)行

    //4.調(diào)用ExecutorService中的方法shutdown銷毀線程池(不建議執(zhí)行)
    es.shutdown();

    es.submit(new RunnableImpl());//拋異常,線程池都沒有了,就不能獲取線程了
}

}
package com.itheima.demo02.ThreadPool;
/*

2.創(chuàng)建一個類,實現(xiàn)Runnable接口,重寫run方法,設(shè)置線程任務(wù)

*/
public class RunnableImpl implements Runnable{

@Override
public void run() {
    System.out.println(Thread.currentThread().getName()+"創(chuàng)建了一個新的線程執(zhí)行");
}

}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/75948.html

相關(guān)文章

  • Java中的線程

    摘要:中的線程池運用場景非常廣泛,幾乎所有的一步或者并發(fā)執(zhí)行程序都可以使用。代碼中如果執(zhí)行了方法,線程池會提前創(chuàng)建并啟動所有核心線程。線程池最大數(shù)量線程池允許創(chuàng)建的線程最大數(shù)量。被稱為是可重用固定線程數(shù)的線程池。 Java中的線程池運用場景非常廣泛,幾乎所有的一步或者并發(fā)執(zhí)行程序都可以使用。那么線程池有什么好處呢,以及他的實現(xiàn)原理是怎么樣的呢? 使用線程池的好處 在開發(fā)過程中,合理的使用線程...

    tomato 評論0 收藏0
  • 從0到1玩轉(zhuǎn)線程

    摘要:提交任務(wù)當(dāng)創(chuàng)建了一個線程池之后我們就可以將任務(wù)提交到線程池中執(zhí)行了。提交任務(wù)到線程池中相當(dāng)簡單,我們只要把原來傳入類構(gòu)造器的對象傳入線程池的方法或者方法就可以了。 我們一般不會選擇直接使用線程類Thread進(jìn)行多線程編程,而是使用更方便的線程池來進(jìn)行任務(wù)的調(diào)度和管理。線程池就像共享單車,我們只要在我們有需要的時候去獲取就可以了。甚至可以說線程池更棒,我們只需要把任務(wù)提交給它,它就會在合...

    darkerXi 評論0 收藏0
  • 線程池原理淺析

    摘要:線程池主要解決兩個問題一是當(dāng)執(zhí)行大量異步任務(wù)時線程池能夠提供很好的性能。二是線程池提供了一種資源限制和管理的手段,比如可以限制現(xiàn)成的個數(shù),動態(tài)新增線程等。該方法返回一個對象,可指定線程池線程數(shù)量。 什么是線程池? 為了避免頻繁重復(fù)的創(chuàng)建和銷毀線程,我們可以讓這些線程進(jìn)行復(fù)用,在線程池中,總會有活躍的線程在占用,但是線程池中也會存在沒有占用的線程,這些線程處于空閑狀態(tài),當(dāng)有任務(wù)的時候會從...

    未東興 評論0 收藏0
  • Java線程池簡單總結(jié)

    摘要:本文主要內(nèi)容為簡單總結(jié)中線程池的相關(guān)信息。方法簇方法簇用于創(chuàng)建固定線程數(shù)的線程池。三種常見線程池的對比上文總結(jié)了工具類創(chuàng)建常見線程池的方法,現(xiàn)對三種線程池區(qū)別進(jìn)行比較。 概述 線程可認(rèn)為是操作系統(tǒng)可調(diào)度的最小的程序執(zhí)行序列,一般作為進(jìn)程的組成部分,同一進(jìn)程中多個線程可共享該進(jìn)程的資源(如內(nèi)存等)。在單核處理器架構(gòu)下,操作系統(tǒng)一般使用分時的方式實現(xiàn)多線程;在多核處理器架構(gòu)下,多個線程能夠...

    CoorChice 評論0 收藏0
  • Java 線程池的認(rèn)識和使用

    摘要:用于限定中線程數(shù)的最大值。該線程池中的任務(wù)隊列維護(hù)著等待執(zhí)行的對象。線程池和消息隊列筆者在實際工程應(yīng)用中,使用過多線程和消息隊列處理過異步任務(wù)。以上是筆者在學(xué)習(xí)實踐之后對于多線程和消息隊列的粗淺認(rèn)識,初學(xué)者切莫混淆兩者的作用。 多線程編程很難,難點在于多線程代碼的執(zhí)行不是按照我們直覺上的執(zhí)行順序。所以多線程編程必須要建立起一個宏觀的認(rèn)識。 線程池是多線程編程中的一個重要概念。為了能夠更...

    mgckid 評論0 收藏0

發(fā)表評論

0條評論

miya

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<