java骞跺彂搴撲箣Executors甯哥敤鐨勫垱寤篍xecutorService鐨勫嚑涓柟娉曡鏄

java骞跺彂搴撲箣Executors甯哥敤鐨勫垱寤篍xecutorService鐨勫嚑涓柟娉曡鏄?

Executors鎻愪緵浜嗕竴浜涙柟渚垮垱寤篢hreadPoolExecutor鐨勫父鐢ㄦ柟娉曪紝涓昏鏈変互涓嬪嚑涓細

1銆?Executors.newFixedThreadPool(int nThreads);鍒涘缓鍥哄畾澶у皬(nThreads,澶у皬涓嶈兘瓒呰繃int鐨勬渶澶у€?鐨勭嚎绋嬫睜

//绾跨▼鏁伴噺

int nThreads = 20;

//鍒涘缓executor 鏈嶅姟

ExecutorService executor = Executors.newFixedThreadPool(nThreads) ;

閲嶈浇鍚庣殑鐗堟湰锛岄渶瑕佸浼犲叆瀹炵幇浜?span style="font-family: monospace;">ThreadFactory鎺ュ彛鐨勫璞°€?/span>

ExecutorService executor =聽Executors.聽newFixedThreadPool(nThreads,threadFactory);

璇存槑锛氬垱寤哄浐瀹氬ぇ灏?nThreads,澶у皬涓嶈兘瓒呰繃int鐨勬渶澶у€?鐨勭嚎绋嬫睜锛岀紦鍐蹭换鍔$殑闃熷垪涓篖inkedBlockingQueue,澶у皬涓烘暣鍨嬬殑鏈€澶ф暟锛屽綋浣跨敤姝ょ嚎绋嬫睜鏃讹紝鍦ㄥ悓鎵ц鐨勪换鍔℃暟閲忚秴杩囦紶鍏ョ殑绾跨▼姹犲ぇ灏忓€煎悗锛屽皢浼氭斁鍏inkedBlockingQueue锛屽湪LinkedBlockingQueue涓殑浠诲姟闇€瑕佺瓑寰呯嚎绋嬬┖闂插悗鍐嶆墽琛岋紝濡傛灉鏀惧叆LinkedBlockingQueue涓殑浠诲姟瓒呰繃鏁村瀷鐨勬渶澶ф暟鏃讹紝鎶涘嚭RejectedExecutionException銆?/p>

2銆丒xecutors.newSingleThreadExecutor()锛氬垱寤哄ぇ灏忎负1鐨勫浐瀹氱嚎绋嬫睜銆?/strong>

ExecutorService executor = Executors.newSingleThreadExecutor();

閲嶈浇鍚庣殑鐗堟湰锛岄渶瑕佸浼犲叆瀹炵幇浜?span style="font-family: monospace;">ThreadFactory鎺ュ彛鐨勫璞°€?/span>

ExecutorService executor =聽Executors.聽newSingleThreadScheduledExecutor(ThreadFactory threadFactory)

璇存槑锛氬垱寤哄ぇ灏忎负1鐨勫浐瀹氱嚎绋嬫睜锛屽悓鏃舵墽琛屼换鍔?task)鐨勫彧鏈変竴涓?鍏跺畠鐨勶紙浠诲姟锛塼ask閮芥斁鍦↙inkedBlockingQueue涓帓闃熺瓑寰呮墽琛屻€?/p>

3銆?strong>Executors.newCachedThreadPool()锛涘垱寤篶orePoolSize涓?锛屾渶澶х嚎绋嬫暟涓烘暣鍨嬬殑鏈€澶ф暟锛岀嚎绋媖eepAliveTime涓?鍒嗛挓锛岀紦瀛樹换鍔$殑闃熷垪涓篠ynchronousQueue鐨勭嚎绋嬫睜銆?/p>

ExecutorService executor = Executors.newCachedThreadPool()锛?/p>

褰撶劧涔熷彲浠ヤ互涓嬮潰鐨勬柟寮忓垱寤猴紝閲嶈浇鍚庣殑鐗堟湰锛岄渶瑕佸浼犲叆瀹炵幇浜?span style="font-family: monospace;">ThreadFactory鎺ュ彛鐨勫璞°€?/span>

ExecutorService executor =聽Executors.newCachedThreadPool(ThreadFactory threadFactory)聽;

璇存槑锛氫娇鐢ㄦ椂锛屾斁鍏ョ嚎绋嬫睜鐨則ask浠诲姟浼氬鐢ㄧ嚎绋嬫垨鍚姩鏂扮嚎绋嬫潵鎵ц锛屾敞鎰忎簨椤癸細鍚姩鐨勭嚎绋嬫暟濡傛灉瓒呰繃鏁村瀷鏈€澶у€煎悗浼氭姏鍑篟ejectedExecutionException寮傚父锛屽惎鍔ㄥ悗鐨勭嚎绋嬪瓨娲绘椂闂翠负涓€鍒嗛挓銆?/p>

4銆丒xecutors.newScheduledThreadPool(int corePoolSize):鍒涘缓corePoolSize澶у皬鐨勭嚎绋嬫睜銆?/strong>

//绾跨▼鏁伴噺

int corePoolSize= 20;

//鍒涘缓executor 鏈嶅姟

ExecutorService executor = Executors.newScheduledThreadPool(corePoolSize) ;

閲嶈浇鍚庣殑鐗堟湰锛岄渶瑕佸浼犲叆瀹炵幇浜?span style="font-family: monospace;">ThreadFactory鎺ュ彛鐨勫璞°€?/span>

ExecutorService executor = Executors.newScheduledThreadPool(corePoolSize, threadFactory)锛?/span>

璇存槑锛氱嚎绋媖eepAliveTime涓?锛岀紦瀛樹换鍔$殑闃熷垪涓篋elayedWorkQueue锛屾敞鎰忎笉瑕佽秴杩囨暣鍨嬬殑鏈€澶у€笺€?/p>