亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術文章
文章詳情頁

Java ExecutorServic線程池異步實現流程

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

相信大家都在項目中遇到過這樣的情況,前臺需要快速的顯示,后臺還需要做一個很大的邏輯。比如:前臺點擊數據導入按鈕,按鈕后的服務端執行邏輯A,和邏輯B(執行大量的表數據之間的copy功能),而這時前臺不能一直等著,要返回給前臺,告訴正在處理中就行了。這里就需要用到異步了。

點擊按鈕 -> 邏輯A ->邏輯B(異步) -> 方法結束。

到底,項目需求明確了,就引入了ExecutorServic線程池。

Java通過Executors提供四種線程池,分別為:

newCachedThreadPool創建一個可緩存線程池,如果線程池長度超過處理需要,可靈活回收空閑線程,若無可回收,則新建線程。 newFixedThreadPool 創建一個定長線程池,可控制線程最大并發數,超出的線程會在隊列中等待。 newScheduledThreadPool 創建一個定長線程池,支持定時及周期性任務執行。 newSingleThreadExecutor 創建一個單線程化的線程池,它只會用唯一的工作線程來執行任務,保證所有任務按照指定順序(FIFO, LIFO, 優先級)執行。

import java.util.concurrent.Callable;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** * @author szy * @version 創建時間: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('執行完畢,看異步結果'); } } 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//增加睡眠時間,便于查看結果/* 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執行數據的大量導入或者導出');System.out.println('task2='+sum);System.out.println('task2導入或者導出完成');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; }}

然后看結果:

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執行數據的大量導入或者導出執行完畢,看異步結果task2=49995000task2導入或者導出完成

可以看出,task1 和task3先執行了,并且方法在沒有等待task2的情況下,直接結束了。

異步的task2另開了一個線程,自己在執行。和主線程已經無關了。

不過,這種在eclipse中以deubug模式是看不出來的。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 成人久久视频 | 亚洲精品韩国美女在线 | 亚洲福利视频一区二区三区 | 国产91久久最新观看地址 | 精品一区二区久久 | 欧美性色黄大片在线观看 | 中国japanesevideo乱 | 香港一级特黄高清免费 | 国产亚洲欧美一区 | 毛片b| 秋霞手机入口二日韩区 | 久久semm亚洲国产 | 日本三级午夜 | 国产欧美日韩在线不卡第一页 | 91精品国产免费久久久久久青草 | 欧美一级毛片欧美毛片视频 | 久久成人免费网站 | 欧美在线一级片 | 高清不卡日本v在线二区 | 国产三级手机在线 | 欧美高清视频手机在在线 | 国产视频精品久久 | 欧美国产高清 | 在线精品免费视频 | 亚洲美女福利视频在线 | 乱子伦农村xxxx | 日韩色在线 | 日本红怡院亚洲红怡院最新 | 久久青草国产手机看片福利盒子 | 欧美一级毛片一级毛片 | 午夜影院黄色片 | 国产91精品一区二区视色 | 男人天堂成人 | 看久久 | 青青爽国产手机在线观看免费 | 久草视频免费在线观看 | 免费国产不卡午夜福在线观看 | 国产一级毛片国语版 | 日本在线免费观看视频 | 国产东北色老头老太性视频 | 色网站在线观看 |