av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java如何固定大小的線程池

瀏覽:26日期:2022-08-10 11:15:07
1.固定大小的線程池簡(jiǎn)介

線程池就是在程序啟動(dòng)的時(shí)候先建立幾個(gè)可以使用的線程放在那里,然后等著具體的任務(wù)放進(jìn)去,這個(gè)任務(wù)基本可以說(shuō)都是Runnable的實(shí)現(xiàn)類,因此它減小了系統(tǒng)每次新建和銷毀線程的開(kāi)銷,但同時(shí)增加了維護(hù)這些線程的開(kāi)銷,個(gè)中取舍看具體情況而定。

固定大小的線程池就是在啟動(dòng)的時(shí)候創(chuàng)建了固定個(gè)數(shù)的線程放在那里等待使用。

2.包裝一個(gè)線程池對(duì)象

public class TaskPool{ private final ThreadPoolExecutor executor = (ThreadPoolExecutor)Executors.newFixedThreadPool(9); // 創(chuàng)建一個(gè)大小為9的固定線程池,可以按照CPU的核數(shù)初步判定,如果CPU密集性任務(wù)則創(chuàng)建N+1個(gè),如果是IO密集型任務(wù)則創(chuàng)建2N+1個(gè),其中N即CPU的核數(shù) protected void shutdown(){// do something// 這個(gè)方法等待線程池中所有已提交任務(wù)執(zhí)行結(jié)束,不接收新任務(wù),然后結(jié)束executor.shutdown(); // 這個(gè)強(qiáng)制結(jié)束所有任務(wù),然后正在等在的任務(wù)列表// executor.shutdownNow(); } protected void execute(Runnable command){// do something// 提交任務(wù)executor.execute(command); } public void status(){StringBuffer sb = new StringBuffer();// 當(dāng)前正在執(zhí)行任務(wù)的線程數(shù)sb.append(executor.getActiveCount() + 'n'); // 當(dāng)前正在等待執(zhí)行的線程數(shù)sb.append(executor.getQueue().size() + 'n'); // 返回已經(jīng)完成的線程數(shù)sb.append(executor.getCompletedTaskCount() + 'n'); System.out.println(sb.toString());// 注:以上方法都是返回一個(gè)大概值,因?yàn)榫€程在執(zhí)行中,這些狀態(tài)隨時(shí)都會(huì)改變 }} 3.使用線程池

public class Launcher{ private TaskPool taskPool = new TaskPool(); public static void main(String[] args){// 新建100個(gè)任務(wù),Runnable的實(shí)現(xiàn)類TaskTask[] tasks = new Task[100];for (int i = 0; i < tasks.length; i++){ tasks[i] = new Task('Task ' + (i+1)); // 提交到線程池運(yùn)行 taskPool.execute(task[i]); if ( i % 50 == 0){taskPool.status();} } private static class Task implements Runnable{private String name;public Task(String name){ this.name = name;}public void run(){ // do something System.out.println('我的名字是:' + this.name);} }}Java線程池小拓展線程池的介紹

1 常用的 池化技術(shù)

C3P0

DBCP

2 線程池的衍生

頻繁的創(chuàng)建線程對(duì)象和多線程之間進(jìn)行上下文切換,是非常耗時(shí)間和資源的所以JDK1.5中提出了線程池技術(shù)

3 使用線程池

Exector

4 線程池的創(chuàng)建

創(chuàng)建一個(gè)固定大小的線程池 ( 最常用的方法 )

ExecutorService pool = Executors.newFixedThreadPool(2);Runnable task = new Runnable() {@Overridepublic void run() {while (true) {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName());}}};pool.execute(task);pool.execute(task);pool.execute(task);//線程池的帶下只有兩個(gè) 現(xiàn)在這個(gè)任務(wù)在其等待隊(duì)列中排隊(duì)等候

創(chuàng)建可變大小的線程池

ExecutorService pool = Executors.newCachedThreadPool();Runnable task = new Runnable() {@Overridepublic void run() {while (true) {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName());}}};pool.execute(task);pool.execute(task);pool.execute(task);

創(chuàng)建獨(dú)立任務(wù)的線程池

ExecutorService pool = Executors.newSingleThreadExecutor();Runnable task = new Runnable() {@Overridepublic void run() {while (true) {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName());}}};pool.execute(task);pool.execute(task);pool.execute(task);

創(chuàng)建可調(diào)度的線程池

ScheduledExecutorService threadPool = Executors.newScheduledThreadPool(2);Runnable task = new Runnable() {@Overridepublic void run() {while (true) {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName());}}};threadPool.schedule(task, 2000, TimeUnit.MILLISECONDS);

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 亚洲精品永久免费 | 亚州一区二区三区 | 一级毛片观看 | 免费视频99 | 日韩精品一区二区三区中文字幕 | 中文字幕在线视频免费视频 | 99久热 | 91精品久久久久久久久中文字幕 | 欧美高清性xxxxhd | 国产精品高潮呻吟久久久久 | 激情久久av一区av二区av三区 | 国产精品美女久久久久久久网站 | 久草网站 | 久久网日本 | 欧洲一区二区三区 | 北条麻妃国产九九九精品小说 | 午夜在线观看视频 | 99久久精品国产毛片 | 亚洲国产日本 | 韩日在线视频 | 成人欧美一区二区三区在线播放 | 国产一区二区三区免费 | 国产精品国产三级国产a | 久久久精彩视频 | 四虎影音 | 91精品国产91久久久久久 | 国产免费福利小视频 | 日韩国产精品一区二区三区 | 在线观看黄视频 | 韩日av在线 | 欧美在线二区 | 青青艹在线视频 | 日韩毛片免费视频 | 久久久黑人 | 欧美一级黑人aaaaaaa做受 | 中文欧美日韩 | 四虎在线观看 | 国产伦一区二区三区久久 | 在线观看欧美日韩视频 | 国产一区二区毛片 | 久草在线影 |