摘要:以下拋異常,因為線程池都沒了線程池之后提供的線程池的工廠類用來生成線程池類中的靜態(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
摘要:提交任務(wù)當(dāng)創(chuàng)建了一個線程池之后我們就可以將任務(wù)提交到線程池中執(zhí)行了。提交任務(wù)到線程池中相當(dāng)簡單,我們只要把原來傳入類構(gòu)造器的對象傳入線程池的方法或者方法就可以了。 我們一般不會選擇直接使用線程類Thread進(jìn)行多線程編程,而是使用更方便的線程池來進(jìn)行任務(wù)的調(diào)度和管理。線程池就像共享單車,我們只要在我們有需要的時候去獲取就可以了。甚至可以說線程池更棒,我們只需要把任務(wù)提交給它,它就會在合...
摘要:本文主要內(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)下,多個線程能夠...
摘要:用于限定中線程數(shù)的最大值。該線程池中的任務(wù)隊列維護(hù)著等待執(zhí)行的對象。線程池和消息隊列筆者在實際工程應(yīng)用中,使用過多線程和消息隊列處理過異步任務(wù)。以上是筆者在學(xué)習(xí)實踐之后對于多線程和消息隊列的粗淺認(rèn)識,初學(xué)者切莫混淆兩者的作用。 多線程編程很難,難點在于多線程代碼的執(zhí)行不是按照我們直覺上的執(zhí)行順序。所以多線程編程必須要建立起一個宏觀的認(rèn)識。 線程池是多線程編程中的一個重要概念。為了能夠更...
閱讀 2157·2021-09-07 10:24
閱讀 2146·2019-08-30 15:55
閱讀 2124·2019-08-30 15:43
閱讀 731·2019-08-29 15:25
閱讀 1151·2019-08-29 12:19
閱讀 2001·2019-08-23 18:32
閱讀 1598·2019-08-23 17:59
閱讀 1015·2019-08-23 12:22