線程池: 任務(wù)提交到線程池,而不是直接交給某線程,線程池拿到任務(wù)后,它在內(nèi)部找空閑的線程進(jìn)行執(zhí)行(封裝),任務(wù)是提交給線程池,一個(gè)線程只能執(zhí)行一個(gè)任務(wù),但可以同時(shí)向一個(gè)線程池提交多個(gè)任務(wù)。
創(chuàng)建固定大小的線程池
創(chuàng)建緩存線程池
如何實(shí)現(xiàn)線程死掉后重新啟動(dòng)?
答案:創(chuàng)建單一線程池Executors.newSingleThreadExecutor();
關(guān)閉線程池
shutdown() 線程池中都處于空閑是結(jié)束線程池
shutdownNow()線程池不管是否有任務(wù)在執(zhí)行都停止
例子:
//線程池public class ThreadPool {public static void main(String[] args) {ExecutorService executorService = Executors.newFixedThreadPool(1);Runnable command = new Runnable() {@Overridepublic void run() {System.out.PRintln("1"+Thread.currentThread().getName()); try {Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}}};executorService.execute(command);executorService.execute(command);executorService.execute(command);executorService.execute(command);executorService.execute(command);executorService.shutdown();}}
輸出:
1pool-1-thread-11pool-1-thread-11pool-1-thread-11pool-1-thread-11pool-1-thread-1
都是一個(gè)線程在執(zhí)行這些任務(wù);在3s執(zhí)行下一個(gè)
----------------------------------------------------------------------
線程池啟動(dòng)定時(shí)器
調(diào)用ScheduledExecutorService的schedule方法,返回的ScheduleFuture對(duì)象可以取消任務(wù)。
支持間隔重復(fù)任務(wù)的定時(shí)方式,不直接支持絕對(duì)定時(shí)方式,需要轉(zhuǎn)換成相對(duì)時(shí)間方式。
Executors.newSchdeduledThreadPool(3).schedule (....)
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注