精品一区二区中文在线,无遮挡h肉动漫在线观看,国产99视频精品免视看9,成全免费高清大全

java線程池介紹與使用 -電腦資料

電腦資料 時間:2019-01-01 我要投稿
【salifelink.com - 電腦資料】

    在同等數量級的操作下,使用線程池的效率要遠遠高于單線程,

java線程池介紹與使用

。線程池可以降低創建線程帶來的開銷。而線程池中的線程結束后進行的是回收操作而不真的將線程銷毀。而在這個過程過,線程池帶來的內存消耗肯定會大于單線程。在使用線程池的時候要慎重這個問題。下面進行兩個方法,分別來測試下。

import java.util.LinkedList;import java.util.List;import java.util.Random;import java.util.concurrent.LinkedBlockingQueue;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;public class ThreadpoolDemo1 {	static void useThreadPool(int count) {		//定義存儲集合		final List<integer>list = new LinkedList<integer>();		long startTime = System.currentTimeMillis();				ThreadPoolExecutor tpe = new ThreadPoolExecutor(1, 1, 60, TimeUnit.SECONDS, new LinkedBlockingQueue<runnable>(count) );		//產生隨機數		final Random random = new Random();		for (int i=0; i < count; i++) {			tpe.execute(new Runnable() {								@Override				public void run() {					list.add(random.nextInt());									}			});		}				tpe.shutdown();		try {			tpe.awaitTermination(1, TimeUnit.DAYS);		} catch (InterruptedException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}				System.out.println(System.currentTimeMillis() - startTime);				System.out.println(list.size());	}	www.2cto.com	static void useOneThread(int count){		final List<integer>list = new LinkedList<integer>();		long startTime = System.currentTimeMillis();		//產生隨機數		final Random random = new Random();		for (int i=0; i<count; -="" auto-generated="" block="" catch="" interruptedexception="" pre="" public="" static="" thread="" todo="" try="" void=""></p><p>    在count參數為同值的時候,使用線程池會比單獨創建線程的速度要快好幾倍。</p><p>    使用線程池的好處:</p><p>    1)減少了創建和銷毀線程的次數,線程可以被重復利用</p><p>    2)線程池中的線程可以被程序員調節。減少系統內存的消耗。</p><p>    線程池的使用:</p>
證明兩者是互不影響的			@Override			public void run() {				System.out.println(System.currentTimeMillis());			}		}, 1000, 2000, TimeUnit.MILLISECONDS);	}}

    ThreadPoolExecutor:

    創建ThreadPoolExecutor的參數:

    corePoolSize: 池中所保存的線程數,包括空閑線程,

電腦資料

java線程池介紹與使用》(http://salifelink.com)。

    maximumPoolSize:池中允許的最大線程數。

    keepAliveTime:當線程數大于核心時,此為終止前多余的空閑線程等待新任務的最長時間。

    Unit:keepAliveTime 參數的時間單位。

    workQueue:執行前用于保持任務的隊列。此隊列僅保持由 execute方法提交的 Runnable任務。

    threadFactory:執行程序創建新線程時使用的工廠。

    Handler:由于超出線程范圍和隊列容量而使執行被阻塞時所使用的處理程序。

最新文章