真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ThreadPool:線程池-創(chuàng)新互聯(lián)

1、定義

成都創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)與策劃設(shè)計,米林網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:米林等地區(qū)。米林做網(wǎng)站價格咨詢:18982081108

緩存一定線程數(shù)量的區(qū)域。

2、作用

復用、管理線程,避免新建線程/銷毀線程消耗CPU資源。

3、核心參數(shù)

參數(shù)  作用

corePoolSize(核心線程數(shù))  核心線程會一直存活

maximumPoolSize(大線程數(shù))  活動線程達到大線程數(shù),后續(xù)新任務(wù)會阻塞

keepAliveTime(閑置線程超時時長)  非核心線程閑置超過該時長將被回收(設(shè)置作用于核心線程threadPoolExecutor.allowCoreThreadTimeOut(true))

unit(keepAliveTime 單位)  如:TimeUnit.MILLISECONDS, TimeUnit.SECONDS

workQueue(任務(wù)隊列)  存放 execute() 提交的 Runnable 對象

threadFactory(線程工廠)  為線程池創(chuàng)建線程,Thread newThread(Runnable r)

4、工作流程

ThreadPool:線程池

5、常用線程池

類型  線程類型  線程數(shù)量  特點  場景

定長線程池(FixedThreadPool)  核心線程  固定  1、核心線程空閑不會回收。2、所有線程處于活動狀態(tài),新的任務(wù)將處于等待狀態(tài),直到有線程空閑。3、任務(wù)隊列無大小限制。4、堆積的任務(wù)可能占用大內(nèi)存  控制線程大并發(fā)數(shù)

定時線程池(ScheduledThreadPool)  核心、非核心線程  核心:固定,非核心:無限制  1、非核心線程閑置時會被回收。2、非核心線程無限制可能創(chuàng)建非常多線程。  執(zhí)行定時/ 周期性任務(wù)

可緩存線程池(CachedThreadPool)  非核心  無限制  1、優(yōu)先使用閑置線程處理任務(wù)。2、線程大小無限制。3、60 秒 回收閑置線程。4、非核心線程無限制可能創(chuàng)建非常多線程。  執(zhí)行數(shù)量多、耗時少的任務(wù)

單線程線程池(SingleThreadExecutor)  核心線程  1個  1、任務(wù)順序執(zhí)行。2、不需要處理線程同步。3、堆積的任務(wù)可能占用大內(nèi)存  單線程

6、具體使用

public class ExecutorDemo {

public static void main(String[] args) {

createThreadPoolExecutor();

createFixedThreadPool();

createScheduledThreadPool();

createCachedThreadPool();

createSingleThreadExecutor();

}

private static final int CPU_COUNT = Runtime.getRuntime().availableProcessors();

private static final int CORE_POOL_SIZE = Math.max(2, Math.min(CPU_COUNT - 1, 4));

private static final int MAXIMUM_POOL_SIZE = CPU_COUNT * 2 + 1;

private static final int KEEP_ALIVE_SECONDS = 30;

private static final BlockingQueue sPoolWorkQueue =

new LinkedBlockingQueue(128);

private static final ThreadFactory sThreadFactory = new ThreadFactory() {

private final AtomicInteger mCount = new AtomicInteger(1);

@Override

public Thread newThread(Runnable r) {

return new Thread(r, "AsyncTask #" + mCount.getAndIncrement());

}

};

public static void createThreadPoolExecutor() {

// 1.創(chuàng)建自定義線程池

ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(

CORE_POOL_SIZE,

MAXIMUM_POOL_SIZE,

KEEP_ALIVE_SECONDS,

TimeUnit.SECONDS,

sPoolWorkQueue,

sThreadFactory);

threadPoolExecutor.allowCoreThreadTimeOut(true);

// 2.創(chuàng)建任務(wù)

Runnable task = new Runnable() {

@Override

public void run() {

System.out.println("自定義線程池-任務(wù)執(zhí)行");

}

};

// 3.通過線程池執(zhí)行任務(wù)

threadPoolExecutor.execute(task);

// 4.關(guān)閉線程池

threadPoolExecutor.shutdown();

}

public static void createFixedThreadPool() {

// 1.創(chuàng)建定長線程池

// public static ExecutorService newFixedThreadPool(int var0) {

// return new ThreadPoolExecutor(var0, var0, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue());

// }

ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3);

// 2.創(chuàng)建任務(wù)

Runnable task = new Runnable() {

@Override

public void run() {

System.out.println("定長線程池-任務(wù)執(zhí)行");

}

};

// 3.通過線程池執(zhí)行任務(wù)

fixedThreadPool.execute(task);

// 4.關(guān)閉線程池

fixedThreadPool.shutdown();

}

public static void createScheduledThreadPool() {

// 1.創(chuàng)建定時線程池

// public ScheduledThreadPoolExecutor(int var1) {

// super(var1, 2147483647, 0L, TimeUnit.NANOSECONDS, new ScheduledThreadPoolExecutor.DelayedWorkQueue());

// } 無錫婦科醫(yī)院排行 http://www.0510bhyy.com/

ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(3);

// 2.創(chuàng)建任務(wù)

Runnable task = new Runnable() {

@Override

public void run() {

System.out.println("定時線程池-任務(wù)執(zhí)行");

}

};

// 3.通過線程池執(zhí)行任務(wù),execute 立即執(zhí)行,schedule 延遲1s執(zhí)行,scheduleAtFixedRate 延遲1s執(zhí)行之后每隔2秒執(zhí)行

// scheduledThreadPool.execute(task);

scheduledThreadPool.schedule(task, 1000L, TimeUnit.MILLISECONDS);

// scheduledThreadPool.scheduleAtFixedRate(task,1000L,2000L, TimeUnit.MILLISECONDS);

// 4.關(guān)閉線程池

scheduledThreadPool.shutdown();

}

public static void createCachedThreadPool() {

// 1.創(chuàng)建可緩存線程池

// public static ExecutorService newCachedThreadPool() {

// return new ThreadPoolExecutor(0, 2147483647, 60L, TimeUnit.SECONDS, new SynchronousQueue());

// }

ExecutorService cachedThreadPool = Executors.newCachedThreadPool();

// 2.創(chuàng)建任務(wù)

Runnable task = new Runnable() {

@Override

public void run() {

System.out.println("可緩存線程池-任務(wù)執(zhí)行");

}

};

// 3.通過線程池執(zhí)行任務(wù)

cachedThreadPool.execute(task);

// 4.關(guān)閉線程池

cachedThreadPool.shutdown();

}

public static void createSingleThreadExecutor() {

// 1.創(chuàng)建單線程線程池

// public static ExecutorService newSingleThreadExecutor() {

// return new Executors.FinalizableDelegatedExecutorService(new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue()));

// }

ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();

// 2.創(chuàng)建任務(wù)

Runnable task = new Runnable() {

@Override

public void run() {

System.out.println("單線程線程池-任務(wù)執(zhí)行");

}

};

// 3.通過線程池執(zhí)行任務(wù)

singleThreadExecutor.execute(task);

// 4.關(guān)閉線程池

singleThreadExecutor.shutdown();

}

}

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


文章名稱:ThreadPool:線程池-創(chuàng)新互聯(lián)
文章分享:http://weahome.cn/article/dhgoij.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部