色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

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

Java ExecutorServic線(xiàn)程池異步實(shí)現(xiàn)流程

瀏覽:2日期:2022-08-20 10:26:34

相信大家都在項(xiàng)目中遇到過(guò)這樣的情況,前臺(tái)需要快速的顯示,后臺(tái)還需要做一個(gè)很大的邏輯。比如:前臺(tái)點(diǎn)擊數(shù)據(jù)導(dǎo)入按鈕,按鈕后的服務(wù)端執(zhí)行邏輯A,和邏輯B(執(zhí)行大量的表數(shù)據(jù)之間的copy功能),而這時(shí)前臺(tái)不能一直等著,要返回給前臺(tái),告訴正在處理中就行了。這里就需要用到異步了。

點(diǎn)擊按鈕 -> 邏輯A ->邏輯B(異步) -> 方法結(jié)束。

到底,項(xiàng)目需求明確了,就引入了ExecutorServic線(xiàn)程池。

Java通過(guò)Executors提供四種線(xiàn)程池,分別為:

newCachedThreadPool創(chuàng)建一個(gè)可緩存線(xiàn)程池,如果線(xiàn)程池長(zhǎng)度超過(guò)處理需要,可靈活回收空閑線(xiàn)程,若無(wú)可回收,則新建線(xiàn)程。 newFixedThreadPool 創(chuàng)建一個(gè)定長(zhǎng)線(xiàn)程池,可控制線(xiàn)程最大并發(fā)數(shù),超出的線(xiàn)程會(huì)在隊(duì)列中等待。 newScheduledThreadPool 創(chuàng)建一個(gè)定長(zhǎng)線(xiàn)程池,支持定時(shí)及周期性任務(wù)執(zhí)行。 newSingleThreadExecutor 創(chuàng)建一個(gè)單線(xiàn)程化的線(xiàn)程池,它只會(huì)用唯一的工作線(xiàn)程來(lái)執(zhí)行任務(wù),保證所有任務(wù)按照指定順序(FIFO, LIFO, 優(yōu)先級(jí))執(zhí)行。

import java.util.concurrent.Callable;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** * @author szy * @version 創(chuàng)建時(shí)間:2018-5-20 上午10:25:06 * */public class Testasync { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub if(task0() == true){ System.out.println('執(zhí)行完畢,看異步結(jié)果'); } } public static void task1(){ System.out.println('task1 is start'); } public static void task2(){ ExecutorService executor = Executors.newFixedThreadPool(1); executor.submit(new Callable(){ @Override public Object call() throws Exception {// TODO Auto-generated method stub//增加睡眠時(shí)間,便于查看結(jié)果/* try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); }*/ //異步提交int sum = 0;for (int i = 0; i < 10000; i++) { sum += i;}System.out.println('task2執(zhí)行數(shù)據(jù)的大量導(dǎo)入或者導(dǎo)出');System.out.println('task2='+sum);System.out.println('task2導(dǎo)入或者導(dǎo)出完成');return null; } }); } public static void task3(){ System.out.println('task3 is start'); int j = 0; while(true) { if(j++ > 10) {break; } System.out.println('------------task3 end-----------'); } } public static boolean task0(){ task1(); task2(); task3(); return true; }}

然后看結(jié)果:

task1 is starttask3 is start------------task3 end-----------------------task3 end-----------------------task3 end-----------------------task3 end-----------------------task3 end-----------------------task3 end-----------------------task3 end-----------------------task3 end-----------------------task3 end-----------------------task3 end-----------------------task3 end-----------task2執(zhí)行數(shù)據(jù)的大量導(dǎo)入或者導(dǎo)出執(zhí)行完畢,看異步結(jié)果task2=49995000task2導(dǎo)入或者導(dǎo)出完成

可以看出,task1 和task3先執(zhí)行了,并且方法在沒(méi)有等待task2的情況下,直接結(jié)束了。

異步的task2另開(kāi)了一個(gè)線(xiàn)程,自己在執(zhí)行。和主線(xiàn)程已經(jīng)無(wú)關(guān)了。

不過(guò),這種在eclipse中以deubug模式是看不出來(lái)的。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 精品久久久久中文字幕日本 | 一区二区三区四区在线播放 | 欧美xx一片 | 12一15女人a毛片 | 一区二区三区日韩精品 | 日本三级11k影院在线 | 成人高清视频在线观看 | 久久国产精品二国产精品 | 亚洲狠狠狠一区二区三区 | 国产在线视频一区二区三区 | 色婷婷激婷婷深爱五月老司机 | 免费一级做a爰片久久毛片 免费一级做a爰片性色毛片 | 男人的天堂官网 | 中文字幕日本不卡 | 国产一区二区三区免费视频 | 国产毛片a精品毛 | 久久精品23 | 欧美日韩亚洲精品一区 | 亚洲美女高清aⅴ视频免费 亚洲美女黄色片 | 性做久久久久久 | 精品三级网站 | 欧美国产三级 | 欧美69精品国产成人 | a毛片免费播放全部完整 | 色偷偷亚洲偷自拍 | 在线观看亚洲天堂 | 毛片1毛片2毛片3毛片4 | 一级特黄aa大片欧美 | 成人国产精品久久久免费 | 久久r视频 | 亚洲天堂久久精品成人 | 99国产精品久久久久久久成人热 | 亚洲综合伊人色一区 | 日本黄网站高清色大全 | 99精品热女视频专线 | 三级黄a | 美日韩一区二区三区 | 久久国产精品久久久久久 | 精品成人毛片一区二区视 | 欧美成人在线视频 | 欧美一级精品 |